2017-10-15 2 views
0

Ich habe eine Liste von 1M bis 10M Strings und ich möchte sehen, welche von ihnen in einem einzigen Dokument (sagen wir 1 Seite des Textes) gefunden werden können.Suche nach vielen Strings in einem einzigen Dokument

Ich weiß, ich kann Lucene (Solr/Elasticsearch) verwenden, um alle Dokumente zu finden, die eine Zeichenfolge enthalten. Aber das ist das Gegenteil.

Ich könnte einige Ad-hoc-Lösung basierend auf einem der String-Suchalgorithmen wie Aho-Corasic, versucht, etc. programmieren, aber ich nehme an, dass ich das Rad neu erfinden würde. Gibt es dafür eine Bibliothek/einen Rahmen?

(Ich bin gut mit den Saiten und die Dokumente in Worte getrennt werden, wenn es einen Unterschied macht)

Antwort

2

Dieser Anwendungsfall wird in der Regel durch eine „Percolator“ Komponente gelöst. Sowohl Apache Solr [1] als auch Elasticsearch [2] bieten die Funktionalität. Im Grunde indexieren Sie die "Abfragen" Q und erstellen Sie dann eine Abfrage D aus einem Dokument, um zu überprüfen, welche Abfragen Q übereinstimmen.

[1] https://github.com/flaxsearch/luwak, http://www.flax.co.uk/what-we-do/luwak/

[2] https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-percolate-query.html

Verwandte Themen