Actualmente estoy indexando una página web usando lucene. El objetivo es poder extraer rápidamente qué página contiene una determinada expresión (generalmente 1, 2 o 3 palabras) y qué otras palabras (o grupo de 1 a 3 de ellas) también están en la página. Esto se usará para construir/enriquecer/alterar un diccionario de sinónimos (vocabulario fijo).¿Cuál es la diferencia entre una consulta de frase y el uso de un filtro de tabla?
De los artículos que encontré, parece que el problema es encontrar n-grams (o tejas).
Lucene tiene un ShingleFilter, un ShingleMatrixFilter y un , que parecen estar relacionados con esta tarea.
De este presentation, aprendí que Lucene también puede buscar términos separados por un número fijo de palabras (llamadas slops). Se proporciona un ejemplo here.
Sin embargo, no entiendo claramente la diferencia entre esos enfoques? ¿Son fundamentalmente diferentes, o es una elección de tamaño de rendimiento/índice que tienes que hacer?
¿Cuál es la diferencia entre ShingleMatrixFilter y ShingleFilter?
¡Espero que un gurú de Lucene ENCUENTRA esta pregunta y responda ;-)!
Gracias por esta respuesta detallada (aceptado). ¿Podría comentar sobre la diferencia entre ShingleFilter y ShingleMatrixFilter? – blackbox
Una buena explicación de hecho. Este artículo me ayudó a entender el herpes zóster con algunos ejemplos prácticos: https://www.elastic.co/blog/searching-with-shingles – krinker