如何在自定义智能搜索 Web 部件 (Kentico 10) 中允许前导通配符

How to allow leading wild cards in custom smart search web part (Kentico 10)

我的产品有一个自定义索引,我正在使用子集分析器。这个分析器很好用,但是如果你做字段搜索,它就不起作用了。

例如,我有一个包含以下字段的文档:

当我只搜索 "name AND tags:(1234)" 时,我在结果中得到了这篇文档,因为它搜索了 +_content:name

-- 然而:

当我搜索 "documentname:(name)^3.0 AND tags:(1234)" 时,我没有在结果中找到该文档。

当然,当我执行 "documentname:(*name*)^3.0" 时,我收到一个解析错误:'*' 或 '?'不允许作为 WildcardQuery.

中的第一个字符

如何在我的自定义 CMS.Search Web 部件中启用通配符查询?

首先,您必须确保您检查的 字段在索引 中并具有正确的名称。 documentname 可能不在索引中,它可以称为 _title,取决于您如何设置索引。获取 lukeall 并检查您的索引(它应该在 \CMS\App_Data\CMSModules\SmartSearch\YourIndexName 中)。您也可以使用 luke 来测试您的搜索。

例如,没有 标签 但有 documenttags 字段。

P.S。 Wildcards are working and you are right you can't use them as a first character by default (lucene documentation says: You cannot use a * or ? symbol as the first character of a search), but there is a way to set it up in lucene.net,虽然我不知道Kentico有没有设置。但我认为您不需要通配符,所以您的查询应该是(假设索引中有文档名和文档标签):

+(documentname:"My-Name" AND documenttags:"tag1")