我有我的产品的自定义索引,并且我正在使用子集分析器。该分析器可以很好地工作,但是如果您进行字段搜索,则无法使用。
例如,我有一个包含以下字段的文档:
"documentname", "My-Document-Name"
"tags", "1234,5678,9101"
"documentdescription", "This is a great Document, My-Document-Name."
当我仅搜索"name AND tags:(1234)"
时,由于它搜索了+_content:name
,因此我在搜索结果中得到了此文档。
-但是:
搜索"documentname:(name)^3.0 AND tags:(1234)"
时,结果中没有此文档。
当然,当我执行"documentname:(*name*)^3.0"
时,我会收到一个解析错误,说:'*'或'?'不允许在WildcardQuery中作为第一个字符。
如何在我的自定义CMS.Search
Webpart中启用通配符查询?
答案 0 :(得分:1)
首先,您必须确保所检查的字段位于索引中,并带有正确的名称。 documentname可能不在索引中,因此可以将其称为_title,这取决于您如何设置索引。获取lukeall并检查您的索引(该索引应位于\CMS\App_Data\CMSModules\SmartSearch\YourIndexName
中)。您也可以使用luke来测试搜索。
例如,没有标记,但有documenttags字段。
P.S。 Wildcards正常工作,很正确,默认情况下您不能将它们用作第一个字符(lucene文档说:您不能使用*或?符号作为搜索的第一个字符),但是有{{ 3}},尽管我不知道Kentico是否有设置。但我认为您不需要通配符,因此您的查询应该是(假设索引中有文档名和文档标签):
+(documentname:"My-Name" AND documenttags:"tag1")