La búsqueda de entidades vía texto es flexible (nombre, provincia, etc.), lo cual permite encontrar resultados incluso si no se cuenta con el texto exacto de la entidad indexada.
Para lograr esta flexibilidad, se utilizan varias herramientas de Elasticsearch: sinónimos, fuzzy search, búsqueda por prefijos y normalización de texto (lowercase, asciifolding, etc.).
Sin embargo, la flexibilidad de búsqueda puede traer problemas. Existen casos donde se traen resultados que claramente (para un usuario) no están relacionados a los términos buscados. Por ejemplo:
Buscar 'santa' en /provincias retorna Salta, Santa Cruz y Santa Fe. Aunque Salta cumple con los requisitos de búsqueda para ser incluída, es debatible si debería aparecer como resultado.
Buscar 'caba' en /provincias retorna CABA y Ciudad de Córdoba (CBA). El problema es el mismo que el planteado anteriormente.
Investigar formas de manejar estos resultados de búsquedas poco intuitivos. Algunas ideas:
Exponer la relevancia de resultados a los usuarios para que extraigan sus propias conclusiones.
Establecer 'términos excluyentes' (por ejemplo: caba <-> cba, santa <-> salta) que permitan excluir resultados dependiendo de los términos de búsqueda utilizados. Internamente utilizarían el mecanismo de sinónimos de Elasticsearch.
La búsqueda de entidades vía texto es flexible (
nombre
,provincia
, etc.), lo cual permite encontrar resultados incluso si no se cuenta con el texto exacto de la entidad indexada.Para lograr esta flexibilidad, se utilizan varias herramientas de Elasticsearch: sinónimos,
fuzzy search
, búsqueda por prefijos y normalización de texto (lowercase
,asciifolding
, etc.).Sin embargo, la flexibilidad de búsqueda puede traer problemas. Existen casos donde se traen resultados que claramente (para un usuario) no están relacionados a los términos buscados. Por ejemplo:
/provincias
retorna Salta, Santa Cruz y Santa Fe. Aunque Salta cumple con los requisitos de búsqueda para ser incluída, es debatible si debería aparecer como resultado./provincias
retorna CABA y Ciudad de Córdoba (CBA). El problema es el mismo que el planteado anteriormente.Investigar formas de manejar estos resultados de búsquedas poco intuitivos. Algunas ideas:
caba
<->cba
,santa
<->salta
) que permitan excluir resultados dependiendo de los términos de búsqueda utilizados. Internamente utilizarían el mecanismo de sinónimos de Elasticsearch.