Zazwyczaj podobny łańcuch analizy występuje zarówno w czasie indeksowania, jak i w zapytaniu. Podobny nie oznacza dokładnie to samo, ale zazwyczaj sposób indeksowania dokumentów odzwierciedla sposób ich wyszukiwania.
Przykład ngrams jest naprawdę dobrym rozwiązaniem, ponieważ jest to jeden z głównych powodów, dla których używałbyś różnych analizatorów w czasie indeksowania i zapytania.
ciągu znaków indeksowania z ngrams krawędzi tak, że "elasticsearch" staje się (z mingram 3 i maxgram 20):
"Ela", "ELAS", "elast", "Elasti", "elastyczny "," elastics "," elasticse "," elasticsea "," elasticsear "," eleasticsearc "i" elasticsearch "
Przeszukamy teraz utworzone pole. Jeśli zapytamy o termin "elastyczny", mamy do czynienia z dopasowaniem i uzyskamy oczekiwany wynik. Zasadniczo staliśmy się tym, co nazwaliśmy powyżej częściowym dopasowaniem ścisłego dopasowania, biorąc pod uwagę to, co zindeksowaliśmy. Nie ma również potrzeby stosowania ngramsów do zapytania. Jeśli my chcemy zapytać o wszystkich następujących warunków:
„Ela”, „ELAS”, „ELAST”, „ELASTI” i „elastyczny”
która stałaby droga zapytanie bardziej skomplikowana i doprowadzi również uzyskać dziwne wyniki. Powiedzmy, że indeksujesz termin "upłynął" w innym dokumencie, w tym samym polu. Można by mieć następujące ngrams:
„ela”, „elap”, „elaps”, „upłynąć”, „upłynął”
Jeśli szukasz „elastyczny” i uczynić ngrams do zapytania, termin "ela" pasowałaby również do tego drugiego dokumentu, więc odzyskałbyś go razem z pierwszym dokumentem, nawet jeśli żadne warunki nie zawierają całego "elastycznego" terminu, którego szukałeś.
Proponuję zapoznać się z analyze api, aby obejrzeć różne analizatory i ich różne wyniki.
Czy mogę wiedzieć, czy moja odpowiedź sprawiła, że sprawy stały się bardziej przejrzyste? – javanna
Link na górze jest zepsuty – Artem