Работает ли токенизатор для индексации или запроса, или для того и другого в Elasticsearch? - PullRequest
1 голос
/ 23 января 2020

Я смотрю на tokenizer в Elasticsearch 6.8. Я знаю, что он определяет, как мы разбиваем текст на слова при создании индекса. Например, он преобразовал бы текст "Quick brown fox!" в термины [Quick, brown, fox!]. Если у меня в Elasticsearch есть поле с текстом "Quick brown fox!", оно будет разбито на три слова в индексе. Но что, если я отправлю текст запроса "Quick brown fox!", tokenizer будет работать и для этого параметра запроса?

Ответы [ 2 ]

1 голос
/ 24 января 2020

Вы также можете проверить, является ли ваш поисковый запрос токенайзером или нет, также вы можете проверить токены, сгенерированные по вашему поисковому запросу. Поскольку это зависит от различных факторов, таких как тип запроса, анализируются и не анализируются запросы.

Запросы на сопоставление являются примером проанализированного запроса, в котором перед сопоставлением анализируется предоставленный текст. в то время как term query является примером неанализированного запроса, где предоставленный текст поиска не анализируется и не отправляется так, как для поиска.

Для проверки токенов, сгенерированных поисковым запросом, используйте Объясните API , который Возвращает информацию о том, почему конкретный c документ соответствует (или не соответствует) запросу. В выводе этого запроса вы сможете проверить токены, сгенерированные для ваших поисковых терминов.

Ниже приведен пример фрагмента из выходных данных для API объяснения, который показывает токены поисковых терминов, сгенерированные в Elasticsearch на основе различных факторов.

"description": "weight(to:Foo in 0) [PerFieldSimilarity], result of:",

Этот API-интерфейс является самым быстрым способом проверки окончательных токенов, сгенерированных ES, которые используются для совпадения токена с токеном.

1 голос
/ 23 января 2020

Анализаторы работают как во время индексации, так и во время запроса, если они правильно настроены в сопоставлениях полей вашего индекса.

На этой странице вы получите полное описание того, когда включается анализатор, повторяется ниже для ясности:

При времени индекса , Elasticsearch будет искать анализатор в следующем порядке:

  • Анализатор определен в полевых карт.
  • Анализатор с именем по умолчанию в настройках индекса.
  • Стандартный анализатор.

Во время запроса есть еще несколько слоев :

  • Анализатор, определенный в полнотекстовом запросе.
  • Search_analyzer, определенный в отображении поля.
  • Анализатор, определенный в отображении поля.
  • Анализатор с именем default_search в настройках индекса.
  • Анализатор с именем default в настройках индекса.
  • Стандартный анализатор.

Как вы можете видеть, анализатор можно использовать как при загрузке данных, так и при их запросе.

...