Lucene.NET 2.9 - MultiFieldQueryParser,提升字段,词干和前缀

时间:2015-01-12 17:47:09

标签: lucene lucene.net prefix information-retrieval

我有一个系统,搜索查询具有不同提升值的多个字段。它运行在Lucene.NET 2.9.4上,因为它是一个Umbraco(6.x)站点,而且是CMS使用的Lucene.NET版本。

我的客户问我是否可以添加词干,所以我写了一个自定义分析器,它使用标准/小写/停止/ PorterStemmer。阻塞过滤器似乎工作正常。

但是现在,当我尝试将我的新分析器与MultiFieldQueryParser一起使用时,它没有找到任何东西。

MultiFieldQueryParser返回一个包含词干的查询 - 例如如果我搜索"数字",我返回的查询的一部分是:

keywords:figur^4.0 Title:figur^3.0 Collection:figur^2.0

即。它正在搜索正确的字段并应用正确的提升,但尝试对包含未经删除的单词的索引上的词干术语进行精确搜索。

我认为实际需要的是MultiFieldQueryParser返回一个类型为PrefixQuery的子句列表。所以它会输出像

这样的查询

keywords:figur*^4.0 Title:figur*^3.0 Collection:figur*^2.0

如果我尝试在术语末尾添加一个通配符,并将其提供给解析器,那么词干分析器就不会启动。即它会构建一个查询来查找"数字*& #34;

有没有办法将MultiFieldQueryParser提升和前缀查询结合起来?

1 个答案:

答案 0 :(得分:1)

您需要使用自定义分析器重新索引。仅在查询时应用词干分析器是没用的。你可能会使用通配符将某些东西混在一起,但它仍然是一个难看的,不可靠的kludge。