Как разрешить использование подстановочных знаков в настраиваемой интеллектуальной части веб-поиска (Kentico 10)
У меня есть пользовательский индекс для моих продуктов, и я использую Subset Analyzer. Этот анализатор прекрасно работает, но если вы выполняете поиск по полю, он не работает.
Например, у меня есть документ со следующими полями:
"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?
1 ответ
Прежде всего вы должны убедиться, что проверяемое вами поле находится в индексе с правильным именем. имя документа может отсутствовать в индексе, его можно назвать _title, в зависимости от того, как настроен ваш индекс. Получите lukeall и проверьте ваш индекс (он должен быть в \CMS\App_Data\CMSModules\SmartSearch\YourIndexName
). Вы также можете использовать luke для проверки ваших поисков.
Для примеров нет тегов, но есть поле documenttags.
PS Подстановочные знаки работают, и вы правы, вы не можете использовать их в качестве первого символа по умолчанию (в документации lucene говорится: вы не можете использовать символ * или? В качестве первого символа поиска), но есть способ установить его в lucene.net, хотя я не знаю, есть ли условия для этого в Кентико. Но я не думаю, что вам нужны символы подстановки, поэтому ваш запрос должен быть (при условии, что у вас есть имя документа и теги документа в индексе):
+(documentname:"My-Name" AND documenttags:"tag1")