Was ist der Unterschied zwischen einer phrase, die Abfrage und mit einem Kies-filter?
Ich bin derzeit Indizierung Webseite mit lucene. Das Ziel ist es, in der Lage sein, schnell zu extrahieren, die Seite enthalten, einen bestimmten Ausdruck (in der Regel 1, 2 oder 3 Wörter), und die anderen Wörter (oder eine Gruppe von 1 bis 3), sind auch in der Seite.
Dies wird verwendet, um zu bauen /bereichern /verändern eines thesaurus (festes Vokabular).
Aus den Artikeln, die ich gefunden, es scheint das problem zu finden n-Gramm (oder Kies).
Lucene hat eine ShingleFilter, ein ShingleMatrixFilter, und ein ShingleAnalyzerWrapper, die scheinen im Zusammenhang mit dieser Aufgabe.
Aus diesem Präsentation, habe ich gelernt, dass Lucene können die Suche auch nach Begriffen, getrennt durch eine Feste Anzahl von Wörtern (genannt slops). Ein Beispiel hier.
Allerdings verstehe ich nicht ganz klar der Unterschied zwischen diesen Ansatz? Sind Sie grundlegend Verschieden sind, oder ist es eine performance - /index-Größe Wahl, die Sie treffen müssen?
Was ist der Unterschied zwischen ShingleMatrixFilter und ShingleFilter?
Hoffen, dass ein Lucene-guru FINDE diese Frage und Antwort 😉 !
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Unterschiede zwischen der Verwendung von Satz versus Schindel vor allem um Leistung und Bewertung.
Bei der Verwendung von Abfragen mit Phrasen (z.B. "foo bar"), in der typische Fall, wo einzelne Wörter in den index, Satz-Abfragen gehen müssen, um den invertierten index für "foo" und "bar" und finden Sie die Dokumente, die beide Begriffe, dann zu Fuß zu Ihren Positionen Listen, in jedes dieser Dokumente zu finden, die Orte, wo "foo" erschien direkt vor der "bar".
Dieser hat einige Kosten zu Leistung und Bewertung:
Auf der anderen Seite, wenn Sie Gürtelrose, Sie sind auch die Indizierung von word n-grams, in anderen Worten, wenn Sie bundverdrängung bis Größe 2, Sie haben auch Begriffe wie "foo bar" im index. Dies bedeutet, dass für diesen Satz-Abfrage, es wird analysiert werden, wie eine einfache TermQuery, ohne Positionen Listen. Und da ist es nun ein "richtiger Begriff", der Satz IDF wird genau sein, weil wir genau wissen, wie viele Dokumente dieser "Begriff" existiert.
Aber mit Gürtelrose hat auch einige Kosten:
Im Allgemeinen, die Indizierung von word-ngrams mit Sachen wie Gürtelrose oder CommonGrams ist nur ein Kompromiss (eher Experte), zur Reduzierung der Kosten von positions-Abfragen oder zur Verbesserung der phrase scoring.
Aber es gibt real-world use cases für das Zeug, ein gutes Beispiel ist hier erhältlich:
http://www.hathitrust.org/blogs/large-scale-search/slow-queries-and-common-words-part-2