Поиск Azure Индексирование данных в атрибуте Collection (Edm.String) - PullRequest
0 голосов
/ 11 июня 2018

В настоящее время мы создаем бота базы знаний, используя SDK Bot Framework (сценарий вопросов и ответов), где мы индексируем данные в поиске Azure, структура индекса содержит доступные для поиска атрибуты Edm.String (de.Microsoft), такие как(Обычный текст, заголовок) и доступные для поиска атрибуты Collection (Edm.String) (de.Microsoft), такие как (ключевые слова, категории продуктов и общие вопросы).

Будут предоставлены взаимные вопросыадминистратором через пользовательский интерфейс, поэтому мой вопрос: лучше ли хранить (индексировать) взаимные вопросы, как они заданы администратором, или лучше индексировать взаимные вопросы после удаления стоп-слов / шумовых слов?

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

Я использую searchMode : любой и queryType : полный при отправкеВ поисковом запросе ниже приведен пример того, как будут выглядеть взаимные вопросы перед удалением стоп-слов и после их удаления.

Пример 1

"MutualQuestions": [
    "Kann ich im Konto ein individuelles Entgelt anlegen, obwohl es im Produkt keines gibt?",
    "Ich möchte eine andere Zinsberechnungsmethode als im Produkt einstellen."
  ],
  "MutualQuestionsNoNoise": [
    "Konto individuelles Entgelt anlegen, Produkt",
    "Zinsberechnungsmethode Produkt einstellen."
  ]

Образец 2

{
  "MutualQuestions": [
    "Wo binde ich Produkte auf der Internetseite ein?",
    "Wie binde ich Produkte in die Internetseite ein?"
  ],
  "MutualQuestionsNoNoise": [
    "binde Produkte Internetseite"
  ]
}

Заранее спасибо

1 Ответ

0 голосов
/ 12 июня 2018

Наличие только ключевых фраз в предложении может улучшить результат поиска.Если пользователи ищут определенное ключевое слово, тогда строка с этим ключевым словом будет иметь лучший результат.Например, если вы ищете «поездка на выходные» , тогда предложение «удивительная поездка на выходные» будет иметь более высокий балл, чем «очень удивительная поездка на выходные» .Если вы используете языковой анализатор , стоп-слова для этого языка будут автоматически удалены во время индексации и поиска.

Однако, как вы указали, это зависит от того, как пользователи формулируют свои запросы.

Как работает полнотекстовый поиск в Azure Search имеет хорошее описание различных типов запросов ирежимы поиска, и как оба влияют на оценку.Примечание: коллекция строк обрабатывается так же, как объединенная строка.То есть: «удивительное путешествие» эквивалентно [«удивительным», «путешествие»].

Обычно выбор типа запроса и режима поиска требует некоторых экспериментов с репрезентативными запросами.В вашем случае я бы попробовал подход с удалением «шума» и использованием searchMode = any .Я не думаю, что queryType имеет большое значение в этом случае.Однако это зависит от того, насколько продвинуты ваши пользователи.Если вы хотите поддерживать регулярные выражения и т. Д., Тогда queryType = full будет более подходящим.

...