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

War es hilfreich?

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 Baltimor und Baltimore in den gleichen Korb.

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top