我有一个1M到10M字符串的列表,我想看看哪一个可以在一个文档中找到(比如说1页文本)。
我知道我可以使用Lucene(Solr / Elasticsearch)查找包含字符串的所有文档。但事实恰恰相反。
我可以基于其中一种字符串搜索算法(如Aho-Corasic,尝试等)编写一些特殊的解决方案,但我想我会重新发明轮子。这有什么库/框架吗?
(如果它有任何区别,我可以将字符串和文档分成单词)
答案 0 :(得分:3)
此用例通常由“Percolator”组件解决。 Apache Solr [1]和Elasticsearch [2]都提供了这些功能。 基本上,您将“查询” Q 编入索引,然后在文档中构建查询 D ,以验证哪些查询与Q匹配。
[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