2010-12-13 9 views
2

Ich habe ein Textfeld, in das ich normalen Text füttere, der Produktcodes enthält (z. B. FI302010, RR220011, usw.). Ich möchte diese Produktnummern suchen können. Ich habe es im ANALYSIS-Tool ausprobiert - und hier sieht es so aus als wäre es möglich. Ein Standardtextfeld begrenzt ein Wort, das die Produktcodes in "FI" und "302010" aufteilt - solange dies jedoch sowohl in der Abfrage als auch im Index geschieht, sollte dies kein Problem darstellen. Wenn ich auf den Schema-Browser schaue, kann ich die Produktcodes nicht finden, aber ich kann etwas finden, das wie eine Stammversion des Codes aussieht (d. H. 30201 - die letzte 0 fehlt).Suche nach Nummern/Produktcodes in Solr

Ich habe versucht, verschiedene Text-Typen (text_ws, textTight und Text) - aber keiner wird mir erlauben, die Suche zu tun.

Wie soll ich die Textsuche im Text aktivieren?

Dank

Antwort

4

Scheint, wie Sie dieses Feld konfigurieren müssen die solr.KeywordTokenizerFactory als tokenizer zu verwenden.
Wie der Name nicht wirklich vermittelt, wird dieser Tokenizer das zugrundeliegende Feld als ein einziges Token behandeln und es mit Leerzeichen, Buchstaben-zu-Nummer, Anzahl-zu-Buchstaben-Übergängen, Interpunktion und allem belassen (außer Sie auch habe char Filter für diese).

Ich bin nicht aktuell auf den neuesten Besonderheiten für Solr für die Konfiguration, aber ich vermute, um den Eintrag in dem Schema für das genannte Gebiet so etwas wie das aussehen könnte:

<fieldtype name="myProductNumberFIeld" class="solr.TextField"> 
    <analyzer> 
    <!-- can have a few filters of course --> 
    <charFilter class="solr.MappingCharFilterFactory" 
     mapping="mapping-ISOLatin1Accent.txt"/> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    <!-- etc. --> 

    <!-- That's the main thing you need --> 
    <tokenizer class="solr.KeywordTokenizerFactory"/> 

    </analyzer> 
</fieldtype> 

Allgemeiner wollen Sie Definieren eines ziemlich spezifischen Analysators für Produktnummer, Teilenummern, UPCs und so weiter, um den Rückruf in diesen Feldern zu verbessern, da die Benutzer nicht immer das spezifische Format dieser Kennungen kennen (wo Interpunktion und andere Trennzeichen, falls vorhanden) sollte usw. sein). Das Problem jedoch, einen anderen Analysator zu haben, besteht darin, dass es verhindert, dass das Feld der allgemeinen Textsuche zugeordnet wird, da es zu einer trivialen Zeit nur eine Möglichkeit geben kann, die Abfrage des Benutzers zu verarbeiten.

0

Das funktioniert eigentlich nur mit der Beispielkonfiguration.

Wenn Sie Solr 1.4.1 auslagern und die Beispielkonfiguration ausführen, können Sie sehen, dass das Analysetool zeigt, dass dies für ein Standardtextfeld funktioniert.

Um zu überprüfen, beachten Sie, dass das Feld "Features" im Beispielschema vom Typ Text ist. Bearbeiten Sie eine der Beispieldateien in apache-solr-1.4.1/example/exampledocs. Sagen Sie "monitor.xml". Fügen Sie den Produktcode zum Feature-Feld eines Dokuments hinzu. (und ein Leerzeichen auf jeder Seite)

Veröffentlichen Sie die Datei in Solr (mit java -jar post.jar monitor.xml). Jetzt suche danach. Es klappt. Überprüfen Sie den Schema-Browser. Zeigen Sie alle Begriffe im Feld Merkmale an. Beachten Sie, dass die Zahl selbst in einem Begriff steht.

Es funktioniert alles für mich.

Nicht sicher, was mit Ihrem Schema browswer passiert ist, vielleicht ein Tippfehler? Zahlen sind nicht belegt. Wenn das nachfolgende Zeichen ein o (Buchstabe) ist, nicht eine Null, könnte das Ihr Problem sein.

Mit dem Befehl keywordTokenizer können Sie nicht den numerischen Teil des Produktcodes finden, der die ursprüngliche Frage war.