Похоже, что поиск Azure не обрабатывает знаки пунктуации Юникод - PullRequest
0 голосов
/ 23 октября 2019

У меня есть индекс поиска Azure с кучей текстовых записей. Я заметил, что если в индексе есть запись типа «ИИ» (с апострофным символом Unicode 8217), поиск слова «ИИ» не даст результата. Индексированный должен обрабатывать знаки препинания - в том числе варианты Unicode. Поиск «Джон» должен вернуть предмет с «Джоном». Пожалуйста, подтвердите, если это известная ошибка, и если да, то когда она будет исправлена.

Ожидается поиск «ИИ» при поиске «ИИ» (где апостроф - это символ Unicode 8217). Товар не возвращается, как можно было ожидать.

Ответы [ 3 ]

0 голосов
/ 24 октября 2019

Спасибо за быстрый ответ. Я использую анализатор по умолчанию (Lucene). Я ожидаю, что он будет обрабатывать апострофы Unicode. Согласно документации, анализатор по умолчанию поддерживает правила сегментации текста Unicode (https://unicode.org/reports/tr29/).. Тем не менее, символы кавычек Unicode 8216 и 8217. не обрабатываются должным образом. 8216 - левый одиночный кавычка, символ Unicode, а 8217 - правый одиночный символ. кавычка Юникод символ:

https://www.fileformat.info/info/unicode/char/2018/index.htm https://www.fileformat.info/info/unicode/char/2019/index.htm

Вы предлагаете мне прекратить использование стандартного анализатора Lucene по умолчанию? Для меня это похоже на ошибку;У меня нет особых требований, требующих замены анализаторов. И да, мой контент на английском языке. Спасибо.

0 голосов
/ 24 октября 2019

Просьба не убирать апостроф. Это канонизировать это. Статья с «Джоном» (ASCII апостроф) соответствует поиску «Джона». Тем не менее, статья с «Джоном» (Unicode апостроф) не делает. Анализатор должен канонизировать варианты Unicode в эквиваленты ASCII, где они имеют смысл. Апостроф Unicode должен быть сопоставлен с вариантом ASCII. Морфологический анализ должен затем применяться вниз по течению. «Can't» не должно совпадать с поиском «can», но «John's» должно совпадать с поиском «John». Суть в том, что синтаксическая канонизация должна быть выше семантической интерпретации. И во многих случаях канонизация может применяться безопасно, даже без необходимости применения языковых морфологических правил - апостроф в Unicode - это просто графический вариант апострофа в ASCII - при отсутствии риска потери семантической информации.

0 голосов
/ 23 октября 2019

Вы можете подтвердить, какой анализатор вы используете в своем индексе? Мы поддерживаем множество анализаторов, которые разбивают ваши поисковые термины и термины документа на разные токены. Например, если ваш контент написан на английском языке, вы можете использовать анализатор en.microsoft, который должен разделить ваш термин «ИИ» на два токена -> «ИИ» и «ИИ».

Подробнее об анализаторах здесь ->

https://docs.microsoft.com/en-us/azure/search/search-analyzers и здесь https://docs.microsoft.com/en-us/azure/search/index-add-language-analyzers

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...