Ich muss einen Algorithmus machen, der mir erlaubt, unbestimmte (Regexp) Suche in Sphinx verwenden.Verwenden von Regexp mit Sphinx
Zum Beispiel: Ich brauche einen Ausdruck zu finden, die unsicheren Symbole enthält: „2x4“ vielleicht aussehen wie „2x4“ oder „2 * 4“ oder „2-4“.
Ich möchte etwas wie das tun: "2 (x | * | -) 4". Aber wenn ich versuche, in Abfrage dieser Konstruktion zu verwenden, teilen Sphinx es auf drei Worte: "2", "(x | * | -)" und "4":
$ search -p "2x4"
...
index 'xxx': query '2x4 ': returned 25 matches of 25 total in 0.000 sec
...
words:
1. '2x4': 25 documents, 25 hits
$ search -p "2(x|y)4"
...
index 'xxx': query '2(x|y)4 ': returned 0 matches of 0 total in 0.000 sec
words:
1. '2': 816 documents, 842 hits
2. 'x': 21 documents, 21 hits
3. 'y': 0 documents, 0 hits
4. '4': 2953 documents, 3014 hits
wie hässliche Hack, den ich Katze etwas tun wie (2x4) | (2 * 4) | (2-4), aber das ist keine gute Lösung, wenn ich eine große Phrase wie "2x4x2.2" bekomme und "2 (x | * | -) 4 (x | * | -) 2 (. |,) 2 ".
Ich kann die Option "charset_table" verwenden, um "*> x", "-> x", ",>." Zu definieren. und so weiter, aber das ist keine flexible Entscheidung.
Können Sie eine bessere Lösung finden?
ps: sorry für mein Englisch =)
Die akzeptierte Antwort ist nicht ganz korrekt.Während RegEx nicht zur Suchzeit verwendet werden kann, kann es beim Erstellen des Index verwendet werden. Siehe meine Antwort. –