Подсветка поиска Azure не работает для подстановочных знаков с профилями скоринга
Поиск Azure поддерживает выделение с помощью полнотекстового поиска, который облегчает клиентам поиск подходящего термина в возвращаемом документе. Я представил простую схему индекса ниже, чтобы проиллюстрировать проблему.
{
"name": "simple-index",
"fields": [
{
"name": "key",
"type": "Edm.String"
},
{
"name": "simplefield",
"type": "Edm.String"
}
],
"scoringProfiles": [
{
"name": "boostedprofile",
"functionAggregation": null,
"text": {
"weights": {
"simplefield": 5,
}
},
"functions": []
}
],
"corsOptions": null,
"suggesters": [],
"analyzers": [],
"tokenizers": [],
"tokenFilters": [],
"charFilters": []
}
Для обычного поискового запроса, как показано ниже, он работает как ожидалось и возвращает ожидаемый результат.
search=foobar&highlight=simplefield
При расширении вышеупомянутого запроса для использования запроса с подстановочными знаками все снова, как и ожидалось, с ответом, содержащим основные моменты в терминах, соответствующих префиксу. Все идет нормально.
search=foo*&highlight=simplefield&querytype=full
После этого, когда я применяю оценочный профиль поверх предыдущего запроса, результаты являются неожиданными, и основные моменты не возвращаются.
search=foo*&highlight=simplefield&querytype=full&scoringprofile=boostedprofile
Как заставить основные моменты работать для запросов с подстановочными знаками при использовании профилей скоринга?
1 ответ
На момент ответа это известное ограничение в поиске Azure, когда выделение не работает для подстановочных запросов при использовании с профилями скоринга. Внутренне Azure Search использует концепцию подсветки, которая отвечает за поток подсветки как отдельный процесс, который происходит после поиска.
В случае запроса с подстановочными знаками он включает поиск всех терминов в индексе, которые соответствуют предоставленному термину префикса, а затем использование их для составления выделенного текста. Профили оценки влияют на способ поиска терминов в индексе для выделения. Благодаря этому результат не включает в себя какие-либо основные моменты.
Поскольку это конкретное ограничение в запросах с подстановочными знаками, одним из обходных путей является предварительная обработка индекса, чтобы избежать выдачи запросов с подстановочными знаками / префиксами. Пожалуйста, взгляните на пользовательский анализ ( https://docs.microsoft.com/en-us/rest/api/searchservice/custom-analyzers-in-azure-search). Вы можете, например, использовать toNenfilter для edgeNgram и хранить префиксы слов в индексе и сгенерируйте регулярный запрос с префиксом (без оператора '*')
Я надеюсь, что это полезно. Пожалуйста, проголосуйте за элемент обратной связи, чтобы помочь нам расставить приоритеты в наших усилиях по разработке, чтобы поддержать другие способы выделения, которые поддержат вышеупомянутый вариант использования. https://feedback.azure.com/forums/263029-azure-search/suggestions/32661961-implement-other-highlighters