Usa sinonimi in elasticsearch

Soluzione 1: Richiede la modifica nell’analizzatore personalizzato creato e aggiungendo che nel nome del campo

Punto 1: Aggiungi tokenizer minuscolo nella mappatura

Il tokenizer degli spazi bianchi non convertirà i token in minuscolo. E nell’elenco dei sinonimi, hai aggiunto 'Television' ma stai interrogando 'television'.

Aggiungi il filtro token minuscolo nella tua mappatura come segue e la tua query ti darà il risultato previsto.

Punto 2: Aggiungi analyzer al nome del campo

Controlla prd_name come ho creato nella mappatura sottostante. Si noti che ho aggiunto analyzer ad esso.

Mapping

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 } } } } } }}

Si noti che qualsiasi modifica della mappatura richiede di ricreare l’indice e di ingerire nuovamente i documenti.

Assicurati che il tuo file sinonimo sia disponibile in tutti i nodi.

Fammi sapere se aiuta.

Soluzione 2: Ridefinire analizzatore di default

Nel caso in cui se non si è in grado di modificare la mappatura del campo, quello che si può fare è, creare un analizzatore con nome default nelle impostazioni

Fondamentalmente ridefinendo il defaultanalizzatore con le impostazioni esattamente come analizzatore synonym.

In questo modo sarebbe l’analizzatore predefinito che verrebbe utilizzato al posto di standard analizzatore e non richiede alcuna modifica nella mappatura del nome del campo.

Di seguito è riportato come sarebbe la mappatura in quel caso.

Mappatura

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 } } } } } }}

Si noti che ho semplicemente rinominato synonym a default nella mappatura.

Nota importante: in qualche modo è necessario reindicizzare tutti i dati affinché le modifiche siano effettive. Nel caso in cui dovessi cambiare la mappatura, reindicizzare tutti i dati e puoi fare tutto ciò che vorresti con i nomi dei campi, allora suggerisco vivamente la soluzione 1.

Fammi sapere se questo aiuta:)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.

Related Posts