我正在寻找能够搜索部分术语的文档搜索引擎(如Xapian,Whoosh,Lucene,Solr,Sphinx或其他)。
例如,当搜索“brit”一词时,搜索引擎应返回包含“britney”或“britain”的文档,或者通常包含与r *brit*
匹配的单词的文档
切向地,我注意到大多数引擎使用TF-IDF(术语频率 - 反向文档频率)或其衍生物,它们基于完整术语而非部分术语。除了TF-IDF之外,还有其他成功实施的技术用于文档检索吗?
答案 0 :(得分:15)
使用lucene,您可以通过多种方式实现此目的:
1。)您可以使用通配符查询*brit*
(您必须将查询解析器设置为允许引导通配符)
2.。)您可以创建包含N-Grams of all the terms的附加字段。这将导致更大的索引,但在许多情况下会更快(搜索速度)。
3.。)您可以使用模糊搜索来处理查询中的输入错误。例如有人打字britnei
,但希望找到britney
。
对于通配符查询和模糊搜索,请查看query syntax docs。