not - lucene query elasticsearch
Lucene Fuzzy Búsqueda de nombres de clientes y direcciones parciales (2)
Rushik, aquí hay algunas ideas:
- Considera usar Solr . Es mucho más fácil comenzar a usarlo, en lugar de descubrir Lucene.
- Construya un índice Lucene / Solr del archivo. Parece que un documento por cliente es suficiente si utiliza un campo de valores múltiples o dos campos diferentes para las direcciones.
- ¿Tienes una identificación única por persona? Para usar Solr, necesitas uno. En Lucene, puedes escapar sin usar una identificación única.
- Almacene el código de país como una "palabra clave". Si solo requiere una coincidencia exacta para la fecha de nacimiento, puede hacer lo mismo. Para las consultas de rango, necesitará otra representación.
- Supongo que su lista de clientes es más pequeña que el archivo. Una política posible sería indexar diariamente los cambios en el archivo (Aquí, una identificación única es realmente útil; de lo contrario, debe eliminar por consulta, lo que puede pasar por alto la marca). Luego puede optimizar el índice y luego realizar una búsqueda de su lista de clientes actualizada.
- Lo que usted describe es una BooleanQuery , cuyas cláusulas son consultas difusas para los nombres y apellidos y consultas de términos para los otros campos. Puede crear la consulta programáticamente o usando el analizador de consultas .
- Considere usar soundex para los nombres como se describe aquí .
Revisé todas las publicaciones de preguntas existentes pero no pude obtener algo muy relevante.
Tengo un archivo con millones de registros para el nombre, apellido, dirección1, dirección2, código de país, fecha de nacimiento de la persona: me gustaría consultar mi lista de clientes con el archivo anterior a diario (mi lista de clientes también se actualiza diariamente y el archivo también se actualiza diariamente).
Para el primer nombre y el apellido, me gustaría la coincidencia difusa (puede ser la coincidencia de lucene fuzzyquery / levenshtein 90% coincidencia) y para los campos restantes país y fecha de nacimiento que quería coincidencia exacta.
Soy nuevo en Lucene, pero al ver la cantidad de publicaciones, parece posible.
Mis preguntas son:
- ¿Cómo debería indexar mi archivo de entrada? Necesito construir un índice de combinación de FN, LN, país, fecha de nacimiento y usar el índice para búsqueda
- ¿Cómo puedo usar la consulta difusa de Lucene aquí?
¿Hay alguna otra forma en que pueda implementar lo mismo?
Merece la pena leer algunos documentos académicos sobre este tema (google para los PDF gratuitos):
- Una comparación de emparejamiento de nombres personales: técnicas y cuestiones prácticas (2006)
- Descripción de la vinculación de registros y las direcciones actuales de investigación (2006)
- Un sistema de enlace de datos de fuente abierta paralelo (2004)
También debe considerar las siguientes bibliotecas / marcos:
(Respondido para futuros visitantes)