gebruik synoniemen in elasticsearch

oplossing 1: vereist wijziging in aangepaste analyzer gemaakt en toevoegen dat in veldnaam

punt 1: voeg kleine letters tokenizer in afbeelding

witruimte tokenizer zou de tokens niet omzetten in kleine letters. En in de lijst met synoniemen hebt u 'Television' toegevoegd, maar zoekt u 'television'.

voeg kleine letters Tokenfilter als volgt toe aan uw toewijzing en uw query geeft u het verwachte resultaat.

punt 2: Analyzer toevoegen aan het veld-Naam

controleer de prd_name als hoe Ik heb gemaakt in de onderstaande toewijzing. Merk op dat ik analyzer heb toegevoegd.

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

merk op dat elke mapping wijziging vereist dat u de index opnieuw maakt en de documenten opnieuw inslikt.

zorg ervoor dat uw synoniembestand beschikbaar is in alle knooppunten.

laat het me weten als het helpt.

oplossing 2: Define default analyzer

in het geval dat u de toewijzing van het veld niet kunt wijzigen, kunt u een analyzer aanmaken met naam default in de Instellingen

.

op die manier zou het de standaard analyzer zijn die gebruikt zou worden in plaats van standard analyzer en vereist geen wijziging in de toewijzing van veldnaam.

hieronder staat hoe de mapping in dat geval zou zijn.

Mapping

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

merk op dat ik eenvoudig synonym naar default heb hernoemd in de mapping.

belangrijke opmerking: op de een of andere manier moet u alle gegevens opnieuwdexeren voordat de wijzigingen van kracht zijn. In het geval als je komt met het hebben van mapping veranderen, reindex alle gegevens, en je kunt alles doen wat je zou willen w.r.t veldnamen, dan stel ik oplossing 1.

laat het me weten als dit helpt:)

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.

Related Posts