Подсветка поиска 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

Другие вопросы по тегам