2017-04-05 2 views
0

Da ich 15.50 nicht als 15 50 indexieren möchte, habe ich in meiner Datei Sphinx Configuration eine Anzahl von Ergänzungen zu der Datei Exceptions gemacht, z.Sphinx zum Erkennen von Ziffern

1.50 => 1.50 

Allerdings wird das schnell aus der Hand.

Ich habe versucht, als Regexp statt z.

(([0-9]{1,3}))\.([0-9]{2})=>\1.\2 

Noch ist es offensichtlich zu spät, um dies mit Regexp zu tun, da der Zeitraum bereits ignoriert wurde. Im Idealfall könnte ich diese Operation auf der gleichen Stufe wie Exceptions erzwingen, so dass ich alle Permutationen gegen eins nach dem anderen in Ausnahmen behandeln könnte (und es wird für gelegentliche #s mit 3 oder mehr Dezimalstellen wie .

völlig unhandlich

Kann ich diese regexp_filter vor dem . passieren zwingen, die Art und Weise ignoriert die Ausnahmen tun oder bin ich der . auf die Sphinxcharacter set?

Antwort

0

glaube nicht, dass seine so viel hinzuzufügen gezwungen, dass die Zeit vor ignoriert wird, sein, dass es wird immer noch nach der Ersetzung ignoriert Exceptions Arbeit als Ausnahmen zu normalen Tokenizing-Regeln (so übereinstimmende Wörter gehen nicht durch den Rest des Systems), weshalb Arbeit fo r du. Während Regex-Filter, einfach die Daten vor der normalen Verarbeitung "transformieren", wird es nicht umgangen.

Sie bei blend_chars http://sphinxsearch.com/docs/current.html#conf-blend-chars schauen ... vielleicht Zeit als eine gemischte char Sie helfen würde.

+0

Am Ende habe ich einfach getan, was ich vermieden habe: meine charset_table in der Config und erzwungenen Perioden zu deklarieren, um erkannt zu werden. Zusätzlicher Bonus ist, dass ich jetzt 'Sentence' in meinen Abfragen verwenden kann :) – user3649739

Verwandte Themen