2016-10-15 3 views
0

Я хочу знать, как * работает в поисковой службе azure. В настоящее время я создал индекс для своих данных и запрашиваю, предоставив следующие данные в поле «поиск» в json.Поведение Asterisk (*) в Azure Search Service

  1. "поиск": "ATM" (Простой текст)
  2. "поиск": "ATM *" (с джокером)
  3. "поиск": "ATM \ *" (спасаясь от * до совпадающие элементы с *, но это не работает)

Но во всех случаях я получаю одинаковый результат. Я хочу знать, как * (или любой другой специальный символ) интерпретируется в лазурном поиске.

Если все они дают одинаковый результат, какой из них следует использовать для получения максимальной производительности?

Благодаря

Добавление большего количества деталей:

У меня есть следующие данные: ATM, ATM 1, ATM 2, ATM *

Во всех 3 случаях я получаю эти 4 результаты. В первом случае он должен вернуть только 1 результат (ATM); во втором случае - все результаты; и в 3-м случае ATM *.

+0

Можете ли вы описать ожидаемый результат и фактический результат, который вы получаете? –

ответ

1

Ожидается, что все три поисковых запроса возвращают одинаковые результаты в этом случае.

При индексировании документы проходят лексический анализ. Тексты в документах обозначаются терминами, а дополнительная обработка, такая как удаление символов и пунктуации, завершается/лемматизация. Предполагая, что вы используете стандартный анализатор по умолчанию, вы получите следующие токены из содержимого документа:

doc1. ATM => atm

doc2. ATM 1 => atm, 1

doc3. ATM 2 => atm, 2

doc5. ATM * => atm (пунктуации и символы отбрасываются по умолчанию)

Термин токены хранятся в инвертированном индексе и используются при поиске документов, содержащих термины.

Во время запроса поисковые запросы также проходят один и тот же процесс анализа. Стандартный анализатор нормализует (сокращает) термины и отменяет пунктуации. Таким образом, оба поисковых запроса «ATM» и «ATM *» анализируются в atm и возвращают те же результаты. Подсказка поиска «ATM *» проходит несколько иначе. Префикс подстановочного знака расширяется до терминов в инвертированном индексе, начинающемся с префикса. Итак, если у вас в документах были «ATM1» и «ATM2» (без пробелов), то также был бы удовлетворен запрос «ATM *» дикого поиска.

Запросы поисковых запросов (ATM *) обычно намного медленнее, чем точные поисковые запросы (ATM или ATM *) из-за процесса расширения запроса.

Кроме того, если вам нужно найти условия со специальными символами (например, «*»), пожалуйста, взгляните на custom analysis in Azure Search. Мы предлагаем пользователям различные способы настройки цепочки анализа.

Nate