folosiți sinonime în elasticsearch

soluția 1: necesită schimbare în analizor personalizat creat și adăugând că în numele câmpului

punctul 1: Adăugați tokenizer minuscule în mapping

whitespace tokenizer nu ar converti jetoanele în minuscule. Și în lista sinonimelor, ați adăugat 'Television', dar interogați 'television'.

Adăugați filtru cu litere mici În maparea dvs. după cum urmează și interogarea dvs. vă va oferi rezultatul așteptat.

punctul 2: Adăugați Analizor la câmpul-Nume

verificați prd_name ca modul în care am creat în maparea de mai jos. Observați că am adăugat Analizor la ea.

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

rețineți că orice modificare de mapare ar necesita să recreați indexul și să ingerați din nou documentele.

asigurați-vă că fișierul sinonim este disponibil în toate nodurile.

Anunță-mă dacă ajută.

Soluția 2: Redefiniți analizorul implicit

în cazul în care nu puteți modifica maparea câmpului, ceea ce puteți face este să creați un analizor cu numele default în setările

redefinind practic analizorul defaultcu setările exact ca Analizor synonym.

în acest fel ar fi analizorul implicit care ar fi folosit în loc de standard analizor și nu necesită nicio modificare În maparea numelui câmpului.

mai jos este modul în care maparea ar fi în acest caz.

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

rețineți că am redenumit pur și simplu synonym la default în mapping.

Notă importantă: cumva ar trebui să reindexați toate datele pentru ca modificările să fie în vigoare. În cazul în care, dacă veniți cu schimbarea mapării, reindexați toate datele și puteți face orice doriți numele câmpurilor w.r.t, atunci vă sugerez cu tărie soluția 1.

Lasă-mă să știu dacă acest lucru ajută 🙂

Lasă un răspuns

Adresa ta de email nu va fi publicată.

Related Posts