2012-07-11 22 views
5

Estoy usando ElasticSerach y quiero configurar la derivación básica para inglés. Entonces, básicamente, el luchador devuelve la lucha o cualquier palabra que contenga la raíz de la lucha.ElasticSearch Stemming

Estoy un poco confundido sobre cómo implementar esto. Estaba leyendo los analizadores, tokenizadores y filtros, y existen algoritmos de derivación múltiples que se pueden usar en ElasticSearch. Simplemente no estoy seguro de qué combinación usar: bola de nieve, lentejuela, vástago porter o filtros de sinónimos.

Además, un ejemplo de la asignación sería realmente útil.

Respuesta

15

Tenga en cuenta el difference between stemming and lemmatisation. El algoritmo Stemming aplica una serie de reglas (y/o búsquedas de diccionarios, como es el caso, por ejemplo, para KStem) y no garantiza que el resultado sea una 'raíz' lingüística propiamente dicha (es decir, lema).

Así, por ejemplo, las palabras 'marinate' y 'marines' se convertirán en 'marin' por Porter stemmer, que se considera bastante 'agresivo' - tiende a producir la misma raíz para un gran número de palabras . Hay otros más conservadores, como por ejemplo S-Stemmer, que solo convierte formas de plural a singular (org.apache.lucene.analysis.en.EnglishMinimalStemFilter).

Las comparaciones de los métodos de derivación que se encuentran en los artículos de investigación parecen favorecer a KStem como el más efectivo para los textos en inglés, pero la elección del letalizador depende en gran medida del vocabulario de sus documentos. No pretendes optimizar el rendimiento del tallo, sino el rendimiento del motor de búsqueda, por lo que medirlo separadamente de otros elementos de tu sistema (especialmente la expansión de consultas) no es una buena idea en la práctica.

La mejor solución es probar un número de diferentes lematizadores que están disponibles en elasticsearch (se puede ver un mapeo de ejemplo here) y observar la precisión y la memoria de los resultados. Si no tiene un conjunto de pruebas de prueba, entonces su mejor opción es realizar consultas 'típicas' y tener cuidado de los resultados 'extraños' (los efectos del analizador son demasiado agresivos) o de los 'buenos' resultados omitidos (demasiado conservadores). stemmer).