2014-06-24 7 views
6

Ich bin neu bei Sphinx und versuche, es richtig konfiguriert zu bekommen. Ich möchte partiellen Wortvergleich für alle Suchvorgänge zulassen und möchte nicht, dass Benutzer selbst Platzhalterzeichen eingeben müssen.Aktivieren Teilwort Übereinstimmungen in Sphinx?

Ich möchte die Suche wie auf Amazon oder Google funktionieren, wo, wenn Sie ein Wort eingeben, Vorschläge kommen. Wenn also beispielsweise jemand "x" eintippt, sollten Übereinstimmungen wie "Xbox" erscheinen.

Hier sind die Index-Einstellungen Ich habe zur Zeit:

min_word_len = 1 
min_prefix_len = 1 
prefix_fields = name 
charset_type = utf-8 

Auf der PHP-Seite der Dinge, ich bin mit SPH_MATCH_EXTENDED2 und SPH_SORT_RELEVANCE. Ich habe den Ranking-Modus auf den Standard verlassen, was auch immer das ist. Diese Einstellungen schienen die besten Suchergebnisse zu liefern, wenn ich die Einstellungen aufgrund von Versuch und Irrtum änderte.

Ich habe ähnliche Fragen hier und auf anderen Seiten gelesen, aber die Antworten scheinen immer enable_star zu referenzieren, die laut der Dokumentation veraltet sind.

Also meine Frage ist, wie kann ich teilweise Wort Übereinstimmungen in Sphinx aktivieren? Soll ich einfach an jedes Wort in einer Benutzerabfrage * anhängen, etwas ähnliches tun?

$search = str_replace(' ', '* ', trim($search)) + '*'; 

Antwort

6

können Sie expand_keywords = 1 als described in the docs eingestellt.

Es fügt eigentlich nur automatisch die Sterne für Sie hinzu - in einer Weise, dass im Allgemeinen die genauen Übereinstimmungen etwas höher rangieren als reine "Teil" Übereinstimmungen.

+0

Danke, es funktioniert perfekt! – Nate