2017-10-15 39 views
0

J'ai une liste de chaînes de 1M à 10M et je veux voir lesquelles d'entre elles peuvent être trouvées dans un seul document (disons 1 page de texte). Je sais que je peux utiliser Lucene (Solr/Elasticsearch) pour trouver tous les documents contenant une chaîne de caractères. Mais c'est le contraire.Recherche de nombreuses chaînes dans un seul document

Je pourrais programmer une solution ad hoc basée sur l'un des algorithmes de recherche de chaînes tels que Aho-Corasic, essais, etc., mais je suppose que je réinventerais la roue. Y a-t-il une bibliothèque/cadre pour cela?

(je suis très bien avec le fractionnement des chaînes et des documents en mots, si cela fait une différence)

Répondre

2

Ce cas d'utilisation est généralement résolu par un composant « percolateur ». Apache Solr [1] et Elasticsearch [2] offrent toutes deux cette fonctionnalité. Fondamentalement, vous indexez les "requêtes" Q puis créez une requête D sur un document pour vérifier quelles requêtes Q correspondent.

[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