2010-05-16 9 views
6

Mit Zend Lucene ich keine Zahlen in Textfelder suchenZend Lucene - nicht Nummern suchen

Hinzugefügt es wie folgt aus:

$doc->addField(Zend_Search_Lucene_Field::Text('description', $current_item['item_short_description'], 'utf-8')); 

für diese googeln zeigte, dass folgende Code der Anwendung sollte das Problem lösen, aber es nicht ..:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive()); 

irgendjemand?

Antwort

8

Sie müssen die Standard-Analysator zweimal: Auf den Indexierungsprozess sowie auf den Suchvorgang einstellen.

die Codezeile Verwenden von oben:

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive()); 
0

Ich bin mir nicht sicher 'zend', aber für Deal mit der Nummer in Lucene, müssen Sie die Verwendung folgende Technik:

  • int Um Platz Verwendung zu dokumentieren folgenden:

    document.Add (neues Feld (FIELD_SPEC, NumberTools.LongToString (YOUR_INT), Field.Store.YES, Field.Index.UN_TOKENIZED)); Laufzeit (field_spec, NumberTools.LongToString (YOUR_INT))

+0

Wie verwende ich es für die Beschreibung? Ich möchte, dass Zahlen innerhalb der Beschreibung durchsuchbar sind. Ich habe nicht nur eine "separate Ganzzahl". –

+0

@Pavel Dubinin - siehe meine Anmerkung: "Um Wert zu finden verwenden Term: ..." Wenn Sie also suchen müssen, erstellen Sie dies als Teil von BooleanQuery, wobei Term mit NumberTools erstellt wird. Etwas kompliziert, wenn Sie den Standard-Qury-Parser verwenden - in diesem Fall machen Sie einen Vorprozess, indem Sie alle Zahlen in Abfragen durch den Wert NumberTools ersetzen – Dewfy

1

Haben Sie verwenden diesen Befehl vor oder nach dem Aufruf von Zend_Search_Lucene :: open():

  • Um Wert Verwendung Begriff ausfindig zu machen?

    Aufruf im Voraus funktioniert definitiv.