#azure-cognitive-search
#azure-когнитивный поиск
Вопрос:
У меня есть индекс, в котором есть документ со следующим текстом:
Машина Джона стоит в магазине.
Поиск по этому тексту для Джона не возвращает документ (с использованием анализатора по умолчанию). Индексатор, похоже, не рассматривает одинарную кавычку как символ остановки. В запросе нет одинарной кавычки, поэтому я ничего не убегаю — индексированный текст содержит одинарную кавычку.
Обратите внимание, что когда я ищу Джона (включая одинарную кавычку), возвращаются правильные результаты. Одинарная кавычка — это символ ASCII 39, а не какой-нибудь причудливый символ апострофа в Юникоде.
Является ли это известной проблемой, и если да, то есть ли обходной путь для этого?
Спасибо.
Ответ №1:
Анализатор по умолчанию делает только минимальные языковые допущения (например, что слова разделены пробелами и пунктуацией). Вы можете использовать один из анализаторов английского языка, если хотите, чтобы поисковая система учитывала элементы английского языка, включая исключение притяжательных, как в вашем примере. Обратите внимание, что анализаторы английского языка выполняют и другие функции, такие как вывод или лемматизация (в зависимости от выбранного вами анализатора). Если требуется только исключение притяжения, но ничего больше, вы можете создать пользовательский анализатор и использовать фильтр маркеров-разделителей слов с включенной опцией исключения притяжения. Подробнее о том, как использовать встроенные анализаторы, такие как английский, здесь, больше о том, как создавать пользовательские анализаторы и список опций для фильтров токенов здесь.