Azure search не возвращает правильные результаты с индексированным текстом, содержащим одинарную кавычку

#azure-cognitive-search

#azure-когнитивный поиск

Вопрос:

У меня есть индекс, в котором есть документ со следующим текстом:

Машина Джона стоит в магазине.

Поиск по этому тексту для Джона не возвращает документ (с использованием анализатора по умолчанию). Индексатор, похоже, не рассматривает одинарную кавычку как символ остановки. В запросе нет одинарной кавычки, поэтому я ничего не убегаю — индексированный текст содержит одинарную кавычку.

Обратите внимание, что когда я ищу Джона (включая одинарную кавычку), возвращаются правильные результаты. Одинарная кавычка — это символ ASCII 39, а не какой-нибудь причудливый символ апострофа в Юникоде.

Является ли это известной проблемой, и если да, то есть ли обходной путь для этого?

Спасибо.

Ответ №1:

Анализатор по умолчанию делает только минимальные языковые допущения (например, что слова разделены пробелами и пунктуацией). Вы можете использовать один из анализаторов английского языка, если хотите, чтобы поисковая система учитывала элементы английского языка, включая исключение притяжательных, как в вашем примере. Обратите внимание, что анализаторы английского языка выполняют и другие функции, такие как вывод или лемматизация (в зависимости от выбранного вами анализатора). Если требуется только исключение притяжения, но ничего больше, вы можете создать пользовательский анализатор и использовать фильтр маркеров-разделителей слов с включенной опцией исключения притяжения. Подробнее о том, как использовать встроенные анализаторы, такие как английский, здесь, больше о том, как создавать пользовательские анализаторы и список опций для фильтров токенов здесь.