Erstellen Sie einen Filter in Sphinx mit Text / String-Wert

8

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 ?

    
Roukmoute 20.04.2011, 20:08
quelle

1 Antwort

16

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%     
JeremyFelix 08.05.2011, 16:06
quelle

Tags und Links