我正在寻找能够搜索部分术语的文档搜索引擎(如 Xapian、Whoosh、Lucene、Solr、Sphinx 或其他)。
例如,在搜索术语“brit”时,搜索引擎应返回包含“britney”或“britain”的文档,或者通常包含与 r *brit*
匹配的词的任何文档。
切线地,我注意到大多数引擎使用 TF-IDF(术语频率 - 逆文档频率)或其基于完整术语而不是部分术语的衍生物。除了用于文档检索的 TF-IDF 之外,还有其他已经成功实现的技术吗?
最佳答案
使用 lucene,您可以通过多种方式实现这一点:
1.) 您可以使用通配符查询 *brit*
(您必须将查询解析器设置为允许前导通配符)
2.) 您可以创建一个包含 N-Grams of all the terms 的附加字段.这将导致更大的索引,但在许多情况下会更快(搜索速度)。
3.) 您可以使用模糊搜索来处理查询中的输入错误。例如有人输入 britnei
但想找britney
.
对于通配符查询和模糊搜索,请查看 query syntax docs .
关于lucene - 部分词的文档搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5786338/