2016-10-31 4 views
0

Ich weiß, das ist schwer (vielleicht unmöglich) in RDB wie MySQL zu tun. Ich frage mich, ob es möglich ist, es mit Solr zu machen. Das ist meine Aufgabe:Solr IS IN Suche möglich?

Ich habe einen Solr-Index mit einem Feld namens parts. Es enthält bis zu 5 zufällige Zeichen wie folgt aus:

12 
123 
22ac 
... 
2a 
2b 
ccc2 
1122a 
xx12 
yy 

Ich brauche die Dokumente zurückgegeben, wenn alle Elemente im parts Feld in der Suchbegriffs sind.

Zum Beispiel, wenn der Suchbegriff 21ba, dann 12, 2a, 2b, 1122a zurückgegeben werden sollte, weil alle ihre Buchstaben des Suchbegriffs sind. Wie geht das in Solr?

Antwort

1

Index die Teile-Bedingungen direkt in einer StrField. Verwenden Sie bei der Ausgabe einer Abfrage einen Solr-Regexp, der mindestens einem der Abfragezeichen entspricht: Wenn der Suchbegriff 21ba lautet, lautet die Abfrage parts:/[21ba]+/.

+1

.. und für diejenigen von uns, die nicht wussten, sind alle Regex standardmäßig in Solr verankert. :-) (also werden^und $ automatisch hinzugefügt). – MatsLindh

1

ok, obwohl es nicht richtig ist, aber kann in der Tat erreicht werden, können Sie Ngram Analyzer verwenden, um jedes Schlüsselwort zu teilen. folgt ein Beispiel unter:

<analyzer> 
    <tokenizer class="solr.NGramTokenizerFactory" minGramSize="1" maxGramSize="2" /> 
</analyzer> 

es in here Detail Dokument ist.