Подсветка поиска Azure не работает для подстановочных знаков с профилями скоринга - PullRequest
0 голосов
/ 28 февраля 2019

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

0 голосов
/ 28 февраля 2019

На момент ответа это известное ограничение в Поиске Azure, когда выделение не работает для подстановочных запросов при использовании с профилями скоринга .Внутренний поиск Azure использует концепцию подсветки, которая отвечает за поток выделения как отдельный процесс, который происходит после поиска.

В случае запроса с подстановочными знаками он включает поиск всех терминов в индексе, которые соответствуют предоставленнойпрефикс термина и затем используйте их, чтобы составить выделенный текст.Профили оценки влияют на способ поиска терминов в индексе для выделения.Из-за этого результат не включает какие-либо выделения.

Поскольку это конкретное ограничение в запросах с подстановочными знаками, одним из обходных путей является предварительная обработка индекса, чтобы избежать выдачи запросов с подстановочными знаками / префиксами.Пожалуйста, взгляните на пользовательский анализ (https://docs.microsoft.com/en-us/rest/api/searchservice/custom-analyzers-in-azure-search). Например, вы можете использовать edgeNgram tokenfilter, сохранять префиксы слов в индексе и выдавать регулярный запрос запроса с префиксом (без оператора '*')

Я надеюсь, что это полезно. Пожалуйста, проголосуйте за элемент обратной связи, чтобы помочь нам расставить приоритеты в наших усилиях по разработке, чтобы поддержать другие способы выделения, которые будут поддерживать вышеупомянутый вариант использования. https://feedback.azure.com/forums/263029-azure-search/suggestions/32661961-implement-other-highlighters

...