Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se proporcionan procedimientos recomendados y sugerencias para validar y solucionar problemas de las implementaciones de IWordBreaker e IStemmer .
Este tema se organiza de la siguiente manera:
- Procedimientos recomendados
- Probar la coherencia del algoritmo de stemming
- Pruebas de entrada inválida en el algoritmo de derivación
- Probar la coherencia del separador de palabras
- Prueba de entrada inválida en el divisor de palabras
procedimientos recomendados
- Asegúrese de que el modelo de subprocesos para los recursos de lenguaje esté establecido en "ambos" en el Registro.
- Siempre que sea posible, coloque los datos de idioma en un recurso en el archivo DLL en lugar de en un archivo independiente. Esto hace que el archivo DLL sea más fácil de instalar y más seguro. Además, colocar los datos de idioma en un recurso dará como resultado un rendimiento mejorado para ese componente de recursos de lenguaje.
- Minimice los recursos del sistema que usan los componentes de recursos de lenguaje. Por ejemplo, si cada instancia de un objeto de recurso de lenguaje necesita acceso de solo lectura a un léxico, considere la posibilidad de compartir el léxico en todas las instancias.
- Considere la posibilidad de usar el separador de palabras neutro para controlar el texto que no está en el idioma o la configuración regional para la implementación del separador de palabras. Esto ayudará a garantizar que el texto se procese de forma coherente en todos los idiomas.
- Compruebe todos los códigos de retorno y los devuelva de funciones como IStemmer::GenerateWordForms e IWordBreaker::BreakText. Si se produce un error en la indexación, es importante pasar el error para que se notifique al usuario qué documentos se indizaron.
Prueba de la coherencia del algoritmo de stemming
Se recomienda supervisar el rendimiento de una implementación de IStemmer para mantener la coherencia en las condiciones siguientes:
- El stemmer funciona de manera constante en varias llamadas a IStemmer::Init. El stemmer se reinicializa con los mismos parámetros que en la inicialización anterior, manteniendo los parámetros sin cambios.
- Dado el mismo corpus de prueba y las repeticiones de la misma consulta, IStemmer::GenerateWordForms genera la salida idéntica y realiza llamadas idénticas a los métodos del objeto IWordFormSink .
Pruebas para la entrada no válida en el algoritmo de stemming
Se recomienda supervisar cómo los métodos de IStemmer controlan todos los errores relacionados con parámetros no válidos. Además, recomendamos que se asegure de que los métodos de stemmer no generan excepciones no controladas. El stemmer debe controlar los siguientes errores:
- Llamada a IStemmer::Init con pfLicense establecido en NULL. Se produce un error en Init y no se produce una infracción de acceso.
- Llame a IStemmer::GetLicenseToUse con el parámetro ppwcsLicense establecido en NULL. IStemmer::GetLicenseToUse no produce una infracción de acceso.
- Llame a IStemmer::GenerateWordForms con el parámetro pwcInBuf establecido en NULL. Se produce un error en IStemmer::GenerateWordForms (devuelve E_FAIL) y no produce una infracción de acceso.
- Llame a IStemmer::GenerateWordForms con el parámetro cwc igual a 0. IStemmer::GenerateWordForms devuelve correctamente (devuelve S_OK) y no produce una infracción de acceso.
- Llame a IStemmer::GenerateWordForms con el parámetro pwcInBuf establecido en NULL y el parámetro cwc igual a 0. Se produce un error en IStemmer::GenerateWordForms (devuelve E_FAIL) y no produce una infracción de acceso.
Prueba de la coherencia del separador de palabras
Se recomienda asegurarse de que la implementación de IWordBreaker se realiza de forma coherente en las condiciones siguientes:
- El separador de palabras realiza de forma coherente varias llamadas a su método IWordBreaker::Init . El separador de palabras reinicializa con los mismos parámetros que en la inicialización anterior, sin liberar los parámetros.
- Dado el mismo corpus de prueba y las repeticiones de la misma consulta, el método IWordBreaker::BreakText genera la salida idéntica y realiza llamadas idénticas a los métodos de los objetos IWordSink e IPhraseSink .
Prueba de entrada no válida en el separador de palabras
Se recomienda asegurarse de que los métodos IWordBreaker controlan todos los errores relacionados con parámetros no válidos. Además, se recomienda asegurarse de que los métodos del separador de palabras no generan excepciones no controladas. El separador de palabras debe realizar las siguientes funciones y controlar los siguientes errores:
- La llamada a IWordBreaker::Init debe devolver LANGUAGE_E_DATABASE_NOT_FOUND o S_OK.
- La llamada a IWordBreaker::Init inicializa correctamente el parámetro pfLicense en FALSE y llama a IStemmer::GetLicenseToUse y no produce una infracción de acceso.
- El separador de palabras no lee más allá del final del parámetro awcBuffer en el método IWordBreaker::BreakText .
- Llame a IWordBreaker::BreakText con pwcInBuf configurado en NULL. Se produce un error en IWordBreaker::BreakText (devuelve E_FAIL) y no produce una infracción de acceso.
- Llame a IWordBreaker::BreakText con el parámetro cwc igual a 0. IWordBreaker::BreakText devuelve correctamente (devuelve S_OK) y no produce una infracción de acceso.
- Llame al método IWordBreaker::BreakText con el parámetro pwcInBuf establecido en NULL y el parámetro cwc igual a 0. Se produce un error en IWordBreaker::BreakText (devuelve E_FAIL) y no produce una infracción de acceso.
- Las frases generadas durante la creación del índice contienen el mismo número de palabras.
- Las frases se generan durante la creación del índice mediante llamadas sucesivas a los métodos IWordFormSink::PutWord e IWordFormSink::PutAltWord. El separador de palabras solo usa el objeto IPhraseSink durante el tiempo de consulta.
Temas relacionados