Как разрешить использование подстановочных знаков в настраиваемой интеллектуальной части веб-поиска (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")
Другие вопросы по тегам