2016-12-06 4 views
0

Ich bin verpflichtet, Solr für meine poc verwenden und ich bin mit dem unten genannten Problem und nicht in der Lage, eine Lösung zu lösen.Indizierung Subwörter einer URL in Solr

Jede Hilfe würde sehr geschätzt werden. !!

Im Folgenden sind die vier Fälle i zu erreichen versuchen: URLs: 1.www.abc.com 2.www.abcdef.com 3.www.123.com/abc 4.www.123 .com/abcdef

Ich verwende Standard-Tokenizer zum Indexieren der URLs, die Wörter wie unten und Index teilt. 1.www.abc.com 2.www.abcdef.com 3.www.123.com und abc 4.www.123.com und abcdef

Wenn ich für abc suchen würde ich nur die 3. URL als Suchergebnis

Aber ich möchte alle vier URLs bekommen, wenn ich mit dem Schlüsselwort abc suche.

Kindy vorschlagen.

Danke.

Antwort

0

Wenn Sie mit der Zeichenfolge "abc" suchen, werden alle Dokumente mit dem Token "abc" als Ergebnis abgerufen. abc stimmt also nur mit abc überein.

abcde oder abcd übereinstimmen .. etc mit Abfrage "abc" entsprechen, sollten Sie Index Dokument n-Gramm

lesen zu Edge-N-Gramm verwendet.

Fügen Sie den folgenden Filter in Ihrer Schemadatei für das Feld analyzer type = "index" zu Ihrer Feldtypdefinition hinzu.

<filter class="solr.EdgeNGramFilterFactory" maxGramSize="20" minGramSize="2"/> 

Beispiel: Feldname = "abcde"

EdgeNGramFilterFactory Token wie ab generieren, bc, cd, de, abc, bcd, cde, abcd, bcde, abcde,

+0

Vielen Dank für Ihre antwort vinod. Ich denke, die Verwendung von NGram ist gut, wenn wir den Feldnamen von wenigen Zeichen haben und Token generieren. Aber in meinem Fall ist Feld eine URL, deren Länge sehr lang sein kann, und ich denke, in diesem Fall wird eine große Anzahl von Tokens erstellt. !! Was denkst du .. – user3257510

+0

richtig, es generiert mehr Anzahl von Token. Daher werden sowohl die Indexgröße als auch die Indexierungszeit erhöht. Kein anderer Weg mit solr. – vinod

Verwandte Themen