Was ist eine Schindel in der Lucene-Sprache?
Hin und wieder werden wir gefragt, was zum Teufel ein Shingle in Lucene ist, wie z.B. der ShingleFilter oder der ShingleMatrixFilter. Es lohnt sich also, einige Informationen über Shingles in Lucene, Solr und Lucidworks zu geben. Zunächst einmal ist ein Shingle nur ein wortbasiertes n-Gramm, im Gegensatz zu einem zeichenbasierten n-Gramm (NGramTokenizer, NGramTokenFilter, EdgeNGramTokenizer und EdgeNGramTokenFilter bieten letztere Funktionalität). Wir haben sie Schindeln genannt, um die beiden zu unterscheiden, wenn es um die Benennung der Filter geht, und weil sie sich, wie die Schindeln auf Ihrem Dach, gegenseitig überlappen.
Wozu sind Shingles gut? Viele Leute verwenden sie, um während des Indizierungsprozesses „Pseudo-Phrasen“ zu erstellen, da die Schindel am Ende ein einzelnes Token ist, das dann der normalen TF-IDF-Bewertung unterliegt, die in Lucene verwendet wird. In vielen Fällen führt die Suche nach Phrasen zu einer Verbesserung der Relevanz, aber die Suche nach Phrasen zur Abfragezeit kann teurer sein als normale Begriffsabfragen, so dass man manchmal versucht, dem Spiel einen Schritt voraus zu sein und Schindeln zu verwenden.
Wenn Sie Shingles in Aktion sehen und sie mit n-Grammen vergleichen möchten, fügen Sie die folgenden Feldtypen zu einem Solr-Beispielschema hinzu:
<fieldtype name="shingle"> <analyzer> <tokenizer class="solr.WhitespaceTokenizerFactory"/> <filter class="solr.ShingleFilterFactory" minShingleSize="2" maxShingleSize="5"/> </analyzer> </fieldtype> <fieldtype name="ngram"> <analyzer> <tokenizer class="solr.NGramTokenizerFactory" maxGramSize="5" minGramSize="2"/> </analyzer> </fieldtype>
Starten Sie als nächstes Ihre Solr-Instanz und gehen Sie zu http://localhost:8983/solr/admin/analysis.jsp und führen Sie die folgenden Schritte aus:
- Wählen Sie in der Zeile Feld die Option „Typ“ aus der Dropdown-Liste und geben Sie Schindel in das Textfeld ein.
- Wählen Sie im Abschnitt Feldwert die Option Ausführliche Ausgabe und geben Sie „Der schnelle rote Fuchs sprang über die faulen braunen Hunde“ ein.
- Klicken Sie auf Absenden. Sie sollten etwas sehen wie:
Wie Sie sehen können, werden für jede Position mehrere Token ausgegeben, von denen viele mehrere Wörter in einem einzigen Token enthalten.
Versuchen Sie als Nächstes denselben Satz, aber wechseln Sie beim Feldtyp von „shingle“ zu „ngram“. Diesmal sollten Sie die Wörter in Zeichengruppen aufgeteilt sehen.
Weitere Informationen finden Sie unter http://en.wikipedia.org/wiki/N-gram. Beachten Sie, dass auch der Ngram Viewer von Google Book für Sie interessant sein könnte: http://ngrams.googlelabs.com/