文档搜索部分单词

Gen*_*cos 10 lucene solr information-retrieval xapian whoosh

我正在寻找能够搜索部分术语的文档搜索引擎(如Xapian,Whoosh,Lucene,Solr,Sphinx或其他).

例如,当搜索术语"brit"时,搜索引擎应该返回包含"britney"或"britain"的文档,或者通常包含匹配r的单词的任何文档.*brit*

切向地,我注意到大多数引擎使用TF-IDF(术语频率 - 反向文档频率)或其衍生物,它们基于完整术语而非部分术语.除了TF-IDF之外,还有其他成功实施的技术用于文档检索吗?

csu*_*nig 16

使用lucene,您可以通过以下几种方式实现此目的:

1.)您可以使用通配符查询*brit*(您必须将查询解析器设置为允许引导通配符)

2.)您可以创建一个包含所有术语的N-Grams的附加字段.这将导致更大的索引,但在许多情况下会更快(搜索速度).

3.)您可以使用模糊搜索来处理查询中的输入错误.例如有人打字britnei但想找britney.

对于通配符查询和模糊搜索,请查看查询语法文档.

  • 您必须告诉查询解析器允许这些类型的查询.使用函数setAllowLeadingWildcard来做到这一点.https://lucene.apache.org/core/4_0_0/queryparser/org/apache/lucene/queryparser/classic/QueryParserBase.html#setAllowLeadingWildcard(boolean) (3认同)