rozwiązanie 1: wymaga zmiany w utworzonym niestandardowym analizatorze i dodania, że w nazwie pola
punkt 1: Dodaj Tokenizer małych liter w mapowaniu
Tokenizer białych znaków nie przekonwertuje tokenów na małe litery. A na liście synonimów dodałeś 'Television'
ale pytasz 'television'
.
Dodaj filtr małych liter w mapowaniu w następujący sposób, a zapytanie da oczekiwany wynik.
pkt 2: Dodaj analizator do nazwy pola
Sprawdź prd_name
jak utworzyłem w poniższym mapowaniu. Zauważ, że dodałem do niego analyzer.
mapowanie
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 } } } } } }}
zwróć uwagę, że każda zmiana mapowania wymaga odtworzenia indeksu i ponownego pobrania dokumentów.
upewnij się, że plik synonimu jest dostępny we wszystkich węzłach.
daj znać, jeśli to pomoże.
Rozwiązanie 2: Przedefiniuj domyślny analizator
w przypadku, gdy nie możesz zmienić mapowania pola, możesz utworzyć analizator o nazwie default
w Ustawieniach
zasadniczo przedefiniuj analizator default
z ustawieniami dokładnie tak, jak analizator synonym
.
w ten sposób byłby to domyślny analizator, który byłby używany zamiast analizatora standard
i nie wymaga zmiany mapowania nazwy pola.
Poniżej znajduje się sposób mapowania w tym przypadku.
mapowanie
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 } } } } } }}
zauważ, że po prostu zmieniłem synonym
na default
w mapowaniu.
Ważna uwaga: w jakiś sposób trzeba by przeindeksować wszystkie dane, aby zmiany weszły w życie. W przypadku, jeśli nie wymyślić konieczności zmiany mapowania, Redex wszystkie dane, i można zrobić wszystko, co chcesz w. R. T nazwy pól, to zdecydowanie proponuję rozwiązanie 1.
daj znać, jeśli to pomoże 🙂