Ich habe Sphinx Search als meine Suchmaschine installiert und ich versuche, ein paar zusätzliche Features zur Suche hinzuzufügen, die setFilter()
und SetSelect()
verwenden, was mir erlaubt, WHERE/AND
-Klauseln zu machen. Aber wenn ich eine Suche versuche, gibt es keine Ergebnisse anstelle von Ergebnissen zurück.
Hier ist meine sphinx.conf: Ссылка
Und hier ist der PHP-Code:
%Vor% Wie kann ich nach type = 4
suchen, nach select1
mit cartoon
filtern und schließlich nach label6
mit children
?
Ich glaube, Sie versuchen, Strings als Attribute zu filtern. Unter Bezugnahme auf die Sphinx-FAQ , skizzieren sie die Vorgehensweise
Wie kann ich filtern, sortieren oder gruppieren? String-Spalte ohne String Attribute?
Sie können das alles machen, außer für präzise Sortierung nach Arbitrary-Länge mehrere Indizes.
Um zu filtern und zu gruppieren, können Sie ersetzen die Zeichenfolge mit einer eindeutigen numerischen ID. Manchmal ist es möglich, ein Nachschlagewörterbuch in der Datenbank (z. B. für feste Listen von Städten oder Länder), oder verwenden Sie sogar ein vorhandenes Ersetzen Sie Zeichenfolgen mit ihren IDs in dieses Wörterbuch, dann Filter und Gruppe auf dieser ID. Wenn nicht, können Sie immer Ersetzen Sie die Zeichenfolge durch ihre Prüfsumme. z.B. CRC32 () oder (beliebige) 64 Bits genommen von MD5 () zur Indexierungszeit (keine Notwendigkeit um die Tabellen zu ändern!), speichern Sie sie mit sql_attr_uint oder sql_attr_bigint jeweils und dann filtern oder gruppieren auf diesem Prüfsummenattribut. (Beachten Sie, dass es gibt eine gewisse Chance von CRC32 () Kollisionen, wenn Sie Millionen von haben Saiten aber praktisch Null Chance von MD5 () Kollisionen.)
Also, in meiner sphinx.conf könnte ich folgendes haben ...
%Vor%Dann würde ich in PHP einen Filter auf das Feld anwenden wie ...
%Vor%-
Leider hat PHP ein lästiges Problem (Bug?) beim Konvertieren in crc32 ... etwas, das unsigned Ganzzahlen oder etwas ..
Ich verwende die folgende Funktion, um korrekt zu konvertieren
%Vor%-
Achten Sie auf den Charakterfall! Sie können die Spalte beim Indizieren zB in Kleinbuchstaben umwandeln.
%Vor%und suchen ...
%Vor%