Нечеткое / неправильное написание в C # API поиска Azure не работает должным образом

У меня есть индекс, содержащий около 1000 элементов. Я выполняю следующий вызов API, чтобы получить результаты.

        var parameters = new SearchParameters
        {
            Select = new[] { "pageTitle", "pageUrl", "metaDescription" },
            Top = 5,
            QueryType = QueryType.Full
        };
        var results = indexer.Documents.Search<IndexPageData>("childrens bed frames~", parameters);

Он работает должным образом с точки зрения получения данных. Но если я неправильно напишу «Детский» с чем-то вроде «Детский» или «Дети» ... Могу ли я подумать, что поиск по нечеткому / неверному написанию поймет и выдаст такие же или очень похожие результаты?

Но я получаю совершенно разные результаты, и они очень плохо совпадают по сравнению с правильно написанным термином.

Мне что-то не хватает с API?


person leen3o    schedule 25.05.2017    source источник
comment
Я думаю, что это, вероятно, проблема грамматики (ключевое слово здесь одно): чтобы выполнить нечеткий поиск, используйте символ тильды ~ в конце одного слова с необязательным параметром, числом от 0 до 2 (по умолчанию), который указывает расстояние редактирования. Например, blue ~ или blue ~ 1 вернет синий, синий и клей. Нечеткий поиск можно применять только к терминам, но не по фразам. Нечеткий поиск может расширить термин до 50 терминов, соответствующих критерию расстояния. docs.microsoft.com/ en-us / rest / api / searchservice /   -  person Aaron    schedule 25.05.2017
comment
Я использую тильду со значением по умолчанию, равным 2? Но в неправильном написании обычно встречаются буквы или ... т.е. ei или пропущенные буквы ... У меня сложилось впечатление, что поисковая система Azure справляется с такими вещами?   -  person leen3o    schedule 25.05.2017
comment
Искать только chldren ~ ... должно работать. У вас в строке 3 слова.   -  person Aaron    schedule 25.05.2017
comment
Или попробуйте детскую ~ кровать ~ рамки ~ возможно ... Это определенно грамматика. Я не за своим столом, но вы сможете найти пример.   -  person Aaron    schedule 25.05.2017
comment
Спасибо. Теперь это работает, как ожидалось!   -  person leen3o    schedule 25.05.2017
comment
Вы не возражаете, если я создам ответ на основе комментариев?   -  person Aaron    schedule 25.05.2017
comment
Пожалуйста, сделайте это, это хороший ответ.   -  person Yahnoosh    schedule 25.05.2017
comment
Конечно. Отмечу как ответ   -  person leen3o    schedule 26.05.2017
comment
спасибо за вопросы. мне было сложно понять, почему нечеткий поиск вообще не работает для меня, даже с тильдами. Выяснилось, что для нечеткого поиска требуются параметры QueryType = QueryType.Full.   -  person Igor V Savchenko    schedule 02.05.2019


Ответы (2)


Согласно комментарию Аарона. Мне не хватало тильды в конце каждого слова

детская ~ кровать ~ каркасы ~

Теперь это ловит такие вещи, как "каркасы детских кроватей" и т. Д.

person leen3o    schedule 20.06.2017

«Нечеткий» поиск в настоящее время доступен только для автора, см. Это . Чтобы правильно токенизируйте слово и предоставьте вам ожидаемый результат.

person K Sant    schedule 31.05.2017
comment
На самом деле это не совсем неверно. Вы не можете использовать нечеткий поиск с помощью azure search sdk, не вмешиваясь в ~ tildas. Для предложений вы можете использовать SuggestParameters с опцией UseFuzzyMatching. SuggestParameters не имеет такого параметра. - person Igor V Savchenko; 02.05.2019