Sphinx Rückkehr schlechte Suchergebnisse
-
09-09-2019 - |
Frage
Ich verwende Sphinx mit dem Denken Sphinx-Plugin. Ich habe ein Modell namens Ort mit dem folgenden Code indiziert (und der Rake thinking_sphinx: index-Befehl)
define_index do
indexes :name
indexes city
indexes zip
end
ich erhalte die Ergebnisse in meinem Controller mit diesem Code:
@venues = Venue.search params[:search]
und ich mache sie als json. Das Problem ist, dass ich, wenn ich getroffen diese URL:
http://localhost:3000/venue/list?search=Baltimo
ich nichts. Aber wenn ich treffe diese URL:
http://localhost:3000/venue/list?search=Baltimor
ich alle in der Stadt Baltimore Veranstaltungsorte. Aus irgendeinem Grund, dass ein Charakter macht einen Unterschied. Theoretisch soll ich alle Veranstaltungsorte in Baltimore bekommen, wenn ich nur mit einem Zeichen suchen - ‚b‘
Wer weiß, was hier los ist?
Danke
Lösung
Wenn Sie enable_star
haben auf 1 gesetzt und min_prefix_len
oder min_infix_len
auf 1 oder mehr, nicht B bekommen Baltimore passen (und selbst dann, ich glaube, Sie müssen für B * suchen, das Spiel zu bekommen).
Was hier passiert, ist, dass standardmäßig Denken Sphinx sagt ein englisches stemmer zu verwenden, die für ähnlich Worte (von Zeichen, nicht von Bedeutung) ermöglicht als Übereinstimmungen, so dass es
Wenn Sie einen Teil eines Wortes angepasst bekommen wollen, dann müssen Sie so etwas wie die folgenden in config / sphinx.yml setzen:
development:
enable_star: 1
min_infix_len: 1
test:
enable_star: 1
min_infix_len: 1
production
enable_star: 1
min_infix_len: 1
Dann stoppen Sphinx, re-Index, und starten Sie Sphinx. Sobald Sie das getan haben, dann sucht nach B * sollte Baltimore zurück.
Hope, das hilft.