2017-05-18 1 views
0

Momentan versuchen Sphinx, Medizinnamen zu suchen, und aufgrund der Art und Weise, wie die US-Struktur medizinische Namen ihren medicine_type in der Datenbank nennt, und es gibt keine Möglichkeit, das zu ändern.Sphinx Partial Word Searching mit unterstrichenen Titeln.

Wenn ich zum Beispiel medicine_type suche Sphinx wird es leicht finden, aber wenn ich nur den Namen des Medikaments eingeben, um alle Arten von diesem Medikament zu bringen, wird es nicht.

Ich habe versucht, expand_keywords = 1 ohne Erfolg zu aktivieren.

Gibt es etwas, was ich tun kann, damit Sphinx macht, was ich brauche?

Antwort

0

Nun, die Standardcharset_table enthält als Wortzeichen unterstreichen

http://sphinxsearch.com/docs/current.html#conf-charset-table

# default are English and Russian letters 
charset_table = 0..9, A..Z->a..z, _, a..z, \ 
    U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+451, U+451 

Eine einfache Lösung, könnte nur sein, sie Tabelle von charset zu entfernen (dh definieren charset_table explizit ohne _ in der Liste!)

# custom charset without understore 
charset_table = 0..9, A..Z->a..z, a..z, \ 
    U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+451, U+451 

... Unterstrich würde dann ein Wort genommen werden Trennzeichen (wie Leerzeichen) und meine Worte würden übereinstimmen.

(könnte vielleicht auch einige der russische Zeichen entfernen, wenn sie nicht brauchen. Und untersuchen, ob andere Buchstaben indizieren möchten)


könnte auch mindestens blend_chars http://sphinxsearch.com/docs/current.html#conf-blend-chars berücksichtigen wollen obwohl in dieser Situation denke nicht, dass es besonders hilft.

+0

Ich bin nicht sicher, die Doku zu lesen, dass ich verstehe, wie die Charset-Tabelle funktioniert, gibt es ein Beispiel? –

+0

Ein explizites Beispiel zum Posten hinzugefügt. – barryhunter