Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico fornece as melhores práticas e sugestões para validar e solucionar problemas de implementações do IWordBreaker e do IStemmer .
Este tópico é organizado da seguinte maneira:
- Práticas recomendadas
- Testando a consistência do stemmer
- Testando entradas inválidas no Stemmer
- Testando a consistência do separador de palavras
- Teste para entrada inválida no Word Breaker
Práticas recomendadas
- Verifique se o modelo de encadeamento para os recursos de linguagem está definido como "ambos" no Registro.
- Sempre que possível, coloque dados de idioma em um recurso em sua DLL em vez de em um arquivo separado. Isso torna a DLL mais fácil de instalar e mais segura. Além disso, colocar dados de idioma em um recurso resultará em um melhor desempenho para esse componente de recurso de linguagem.
- Minimize os recursos do sistema que os componentes de recurso de linguagem usam. Por exemplo, se cada instância de um recurso de linguagem precisar de acesso somente de leitura a um léxico, considere compartilhar o léxico entre todas as instâncias.
- Considere usar o separador de palavras neutro para manipular o texto que não está no idioma ou localidade da implementação do separador de palavras. Isso ajudará a garantir que o texto seja processado consistentemente em todos os idiomas.
- Verifique todos os códigos de retorno e retorne-os de funções como IStemmer::GenerateWordForms e IWordBreaker::BreakText. Se a indexação falhar, é importante passar o erro para que o usuário seja notificado quais documentos foram indexados.
Testar a consistência do stemmer
Recomendamos que você monitore o desempenho de uma implementação do IStemmer para consistência nas seguintes condições:
- O lematizador funciona de forma consistente em várias chamadas para IStemmer::Init. O processador de radical é reinicializado com os mesmos parâmetros usados na inicialização anterior, sem liberar os parâmetros.
- Considerando o mesmo corpus de teste e repetições da mesma consulta, IStemmer::GenerateWordForms produz a saída idêntica e faz chamadas idênticas aos métodos do objeto IWordFormSink .
Teste para entrada inválida no stemmer
Recomendamos que você monitore como os métodos IStemmer lidam com todos os erros relacionados a parâmetros inválidos. Além disso, recomendamos que você verifique se os métodos de stemmer não geram exceções não tratadas. O stemmer deve lidar com os seguintes erros:
- Chame IStemmer::Init com pfLicense definido como NULL. O init falha e não resulta em uma violação de acesso.
- Chame iStemmer::GetLicenseToUse com o parâmetro ppwcsLicense definido como NULL. IStemmer::GetLicenseToUse não resulta em uma violação de acesso.
- Chame IStemmer::GenerateWordForms com o parâmetro pwcInBuf definido como NULL. IStemmer::GenerateWordForms falha (retorna E_FAIL) e não resulta em uma violação de acesso.
- Chamada para IStemmer::GenerateWordForms com o parâmetro cwc igual a 0. IStemmer::GenerateWordForms retorna com êxito (retorna S_OK) e não resulta em uma violação de acesso.
- Chame iStemmer::GenerateWordForms com o parâmetro pwcInBuf definido como NULL e o parâmetro cwc igual a 0. IStemmer::GenerateWordForms falha (retorna E_FAIL) e não resulta em uma violação de acesso.
Testando a consistência do separador de palavras
É recomendável garantir que a implementação do IWordBreaker seja executada de forma consistente nas seguintes condições:
- O separador de palavras é executado consistentemente em várias chamadas para seu método IWordBreaker::Init . O separador de palavras reinicializa com os mesmos parâmetros da inicialização anterior, sem liberar os parâmetros.
- Considerando o mesmo corpus de teste e repetições da mesma consulta, o método IWordBreaker::BreakText produz a saída idêntica e faz chamadas idênticas aos métodos dos objetos IWordSink e IPhraseSink .
Testagem para entrada inválida no quebrador de palavras no Word
Recomendamos que você verifique se os métodos IWordBreaker lidam com todos os erros relacionados a parâmetros inválidos. Além disso, recomendamos que você verifique se os métodos de separação de palavras não geram exceções sem tratamento. O separador de palavras deve executar as seguintes funções e manipular os seguintes erros:
- A chamada para IWordBreaker::Init deve retornar LANGUAGE_E_DATABASE_NOT_FOUND ou S_OK.
- Chamar iWordBreaker::Init inicializa com êxito o parâmetro pfLicense para FALSE e chama IStemmer::GetLicenseToUse e não resulta em uma violação de acesso.
- O separador de palavras não lê além do final do parâmetro awcBuffer no método IWordBreaker::BreakText .
- Chame iWordBreaker::BreakText com o pwcInBuf definido como NULL. IWordBreaker::BreakText falha (retorna E_FAIL) e não resulta em uma violação de acesso.
- Chamada para IWordBreaker::BreakText com o parâmetro cwc igual a 0. IWordBreaker::BreakText retorna com êxito (retorna S_OK) e não resulta em uma violação de acesso.
- Chame para o método IWordBreaker::BreakText com o parâmetro pwcInBuf definido como NULL e o parâmetro cwc igual a 0. IWordBreaker::BreakText falha (retorna E_FAIL) e não resulta em uma violação de acesso.
- As frases geradas durante a criação do índice contêm o mesmo número de palavras.
- As frases são geradas durante a criação do índice por meio de chamadas sucessivas para os métodos IWordFormSink::PutWord e IWordFormSink::PutAltWord. O separador de palavras usa apenas o objeto IPhraseSink durante o tempo de consulta.
Tópicos relacionados
-
Implementando um separador de palavras e um stemmer