2013-08-15 15 views
6

Ich weiß, dass Sie die meisten verwendeten Begriffe in einem Index mit Facetten finden können.Wie findet man die am häufigsten verwendeten Ausdrücke in elasticsearch?

Zum Beispiel auf folgende Eingänge:

"A B C" 
"AA BB CC" 
"A AA B BB" 
"AA B" 

Begriff Facette gibt diese:

B:3 
AA:3 
A:2 
BB:2 
CC:1 
C:1 

Aber ich frage mich, dass es möglich ist, Gefolgschaften aufzulisten:

AA B:2 
A B:1 
BB CC:1 

....etc... 

Ist Gibt es ein solches Feature in ElasticSearch?

+2

Vielleicht versuchen, einen benutzerdefinierten Analysator auf dem Feld zu definieren, die den 'Schindel'-Analysator verwendet. Dies wird Token durch Kombinieren von Wörtern (wie Sie fragen) erstellen. Sie können dann versuchen, festzustellen, ob die Facette die Anzahl der kombinierten Token zurückgibt. Haben Sie einen [sehen Sie sich die ES Docs auf Schindel-Token-Filter] (http://www.elasticsearch.org/guide/reference/index-modules/analysis/shingle-tokenfilter/) – ramseykhalaf

+0

Danke, das könnte funktionieren. Facets gibt Tokens zurück, also wird es wahrscheinlich auch diese phrase_tokens zurückgeben. Aber das ist nicht für bestehende Indizes anwendbar und dies wird die Dateigröße zu sehr erhöhen, oder? Ich werde diese Funktion für täglich 5 GB meiner Daten benötigen. Und nach diesem Tag werde ich es nicht mehr brauchen. Also, ich denke, das beste Ding zu tun, dass 5 GB Daten am Ende des täglichen Index, speichern Sie die Facette Ergebnisse und löschen Sie dann diese neuen Indexdaten. (Dies wird in einer Schleife weitergehen) Weitere Optionen? – shyos

+0

Ich glaube Antwort ist verfügbar unter http://stackoverflow.com/questions/39380463/get-top-100-most-used-three-word-phrases-in-all-documents – AlexG

Antwort

2

Wie im Kommentar von ramseykhalaf erwähnt, würde ein Schindelfilter Token der Länge "n" -Worte erzeugen.

Weitere Details finden Sie unter blog post.

+0

Ich habe die Schindeln hinzugefügt, und ich denke es funktioniert, aber http://www.elasticsearch.org/blog/searching-with-shingles/still lässt mich nicht herausfinden, welche Phrasen am häufigsten verwendet werden. Wie verwenden wir eine Facette und Gürtelrose, http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-facets-terms-stats-facet.html, bekomme ich immer noch ein Wort Ergebnis, "{ term: term1, count: 203} ", wie bekomme ich" {term: "shingles is": count 5} "? –

+0

Ich habe die gleichen Probleme - ich habe das noch nicht ausprobiert - aber wenn Sie die Aggregation/Facettierung auf dem Schindelfeld tun, hilft das? Ich bin nur nicht sicher über die Stemming in der Analyse. ZB wenn ich "Wasserloch" und "Wasserloch" und "Wasserloch" habe, würden diese auf dasselbe fallen, aber vielleicht sollten sie nicht. http://project.carrot2.org/index.html ist wirklich dafür gemacht - aber wenn du es in elastischer Suche alleine machen könntest, wäre das großartig. – Yehosef

+0

Die Aggregation von Termen und wichtigen Begriffen funktioniert nicht mit Schindelzeichen. Ich weiß noch nicht warum. –

0

Ich bin mir nicht sicher, ob elasticsearch es Ihnen erlaubt, das so zu tun, wie Sie es wollen. Aber Sie könnten interessiert sein, Carrot2 - http://project.carrot2.org/index.html zu überprüfen was Sie wollen (und wahrscheinlich mehr.)

Verwandte Themen