Выделение в Поиске 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

Как сделать так, чтобы подсветка работала для запросов с подстановочными знаками при использовании профилей оценки?


person Ishan Srivastava    schedule 28.02.2019    source источник


Ответы (1)


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

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

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

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

person Ishan Srivastava    schedule 28.02.2019