Use sinónimos en elasticsearch

Solución 1: Requiere un cambio en el analizador personalizado creado y agregar que en nombre de campo

Punto 1: Agregar tokenizador en minúsculas en mapping

El tokenizador de espacios en blanco no convertirá los tokens en minúsculas. Y en la lista de sinónimos, ha agregado 'Television' pero está consultando 'television'.

Agregue un filtro de Token en minúsculas en su asignación de la siguiente manera y su consulta le dará el resultado esperado.

Punto 2: Agregar analizador al nombre de campo

Marque prd_name como lo he creado en la asignación a continuación. Observe que le he agregado analizador.

Asignación

PUT products{ "settings":{ "index":{ "analysis":{ "analyzer":{ "synonym":{ "tokenizer":"whitespace", "filter": } }, "filter":{ "synonym":{ "type":"synonym", "synonyms_path":"analysis/synonym.txt" } } } } }, "mappings":{ "mydocs":{ "properties":{ "prd_name":{ "type":"text", "analyzer":"synonym", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } } } } }}

Tenga en cuenta que cualquier cambio de asignación requerirá que vuelva a crear el índice e ingiera los documentos de nuevo.

Asegúrese de que su archivo de sinónimo esté disponible en todos los nodos.

Avísame si ayuda.

Solución 2: Redefinir analizador predeterminado

En caso de que no pueda cambiar la asignación del campo, lo que puede hacer es crear un analizador con el nombre default en la configuración

Básicamente redefinir el analizador default con la configuración exactamente como analizador synonym.

De esa manera, sería el analizador predeterminado el que se usaría en lugar de standard analyzer y no requiere ningún cambio en la asignación del nombre del campo.

A continuación se muestra cómo sería la asignación en ese caso.

Asignación

PUT <your_index_name>{ "settings":{ "index":{ "analysis":{ "analyzer":{ "default":{ "tokenizer":"whitespace", "filter": } }, "filter":{ "synonym":{ "type":"synonym", "synonyms_path":"analysis/synonym.txt" } } } } }, "mappings":{ "mydocs":{ "properties":{ "prd_name":{ "type":"text", "fields":{ "keyword":{ "type":"keyword", "ignore_above":256 } } } } } }}

Tenga en cuenta que simplemente he cambiado el nombre de synonym a default en la asignación.

Nota importante: De alguna manera, tendría que volver a indexar todos los datos para que los cambios estén en vigor. En caso de que tenga que cambiar la asignación, reindexar todos los datos y pueda hacer lo que quiera con los nombres de campo w.r.t, le sugiero encarecidamente la solución 1.

Avísame si esto ayuda:)

Deja una respuesta

Tu dirección de correo electrónico no será publicada.

Related Posts