Wprowadzam wyszukiwanie solr fuzzy przy użyciu złożonego zapytania frazowego. Ale kończę wątek:
q={!complexphrase}name:"woo~1 grou~2"
powrót "grupa drewna" w rezultacie.
q={!complexphrase}name:"woo~1 gro~2"
nie powrót "grupa drewna". Althouth odległość między gro i grupy wynosi 2!
wyszukiwanie tego zapytania:
q={!complexphrase}name:"Anderso~1 Interes~2"
zwraca "Zainteresowania Andersona". Różnica między Interes i Interesami jest taka sama jak w grupie i grupie !!!
jakikolwiek pomysł jaki jest powód?
Odpowiedzi:
2 dla odpowiedzi № 1Uważam, że napotykasz problem z przepisywaniem zapytań.
Dowolne zapytanie wielowyrazowe (zapytania rozmyte, prefikskwerendy itp.) zostaje rozszerzony, w Lucene, na dokładne warunki, które pasuje. Istnieje maksymalna liczba terminów, które mogą być generowane w ten sposób, więc przy przepisywaniu zapytania, po prostu spróbujesz wybrać najlepsze z tego limitu. Podejrzewam, że jest za dużo meczów gro~2
.
Być może uznasz to za dziwne, że jest ich tak wieledopasowuje, że nie może włączyć wszystkich do kwerendy. Wygląda na to, że próbujesz wyszukać słowa rozpoczynające się od gro, i z maksymalnie dwoma literami wstawionymi na koniec. Ile może być? nie jest Czego szukasz? Zapytania rozmyte są oparte na odległości levenshtein. Dopasowania tego terminu obejmują:
g__
- Trzyliterowe słowa rozpoczynające się na g_r_
- Trzyliterowe słowa z symbolem r na środku__o
- Trzyliterowe słowa z o na końcugr__
- Dowolne czteroliterowe słowo rozpoczynające się od gr- itp.
Krótko mówiąc, może pasować do a masywny lista terminów i pod względem algorytmu podobieństwa, "ramię" i "cron" pasują równie dobrze jak "grupa".
Jeśli ty naprawdę po prostu chcesz dopasować terminy rozpoczynające się od "gro", zamiast tego użyj zapytania prefiksowego: "woo* gro*"
.
Jeśli chcesz rzeczywiście wyszukiwać z rozmytym zapytaniem, w tym z listą możliwych wyników opisanych powyżej, możesz powiększyć MaxBooleanClauses
, w Twoim sekcja zapytania solrconfig.
<query>
<maxBooleanClauses>1024</maxBooleanClauses>