Lucene.NET 2.9 - MultiFieldQueryParser、增强字段、词干提取和前缀

Lucene.NET 2.9 - MultiFieldQueryParser, boosted fields, stemming and prefixes

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

我的客户问我是否可以添加词干提取,所以我编写了一个自定义分析器来执行 Standard / Lowercase / Stop / PorterStemmer。词干过滤器似乎工作正常。

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

MultiFieldQueryParser 正在 return 查询包含词干词 - 例如如果我搜索 "the figure",作为查询的一部分,我得到的 returns 是:

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

即它正在搜索正确的字段并应用正确的提升,但试图在包含未词干词的索引上对词干词进行精确搜索。

我认为 MultiFieldQueryParser 真正需要的是return PrefixQuery 类型的子句列表。所以它会输出像

这样的查询

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

如果我尝试在术语的末尾添加一个通配符,并将其输入解析器,词干分析器不会启动。即它会构建一个查询来查找 "figure*"。

有什么方法可以结合 MultiFieldQueryParser 提升和前缀查询吗?

您需要使用自定义分析器重新编制索引。仅在查询时应用词干分析器是无用的。您可能会使用通配符拼凑一些东西,但它仍然是一种丑陋、不可靠的拼凑。