Text
ряд запросов были переименованы в Match
в Elasticsearch в некоторый момент (ранние версии 0.19 или 0.20, я считаю). Вы можете найти документацию для Match
здесь: http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-match-query.html
Способ, которым они работают, прост. Учитывая эту фразу: «быстрая коричневая лиса перепрыгнула», то match
запрос ищет:
quick
ИЛИ brown
ИЛИ fox
ИЛИ jumped
Там нет заказа участвует ... match
просто ищет наличие отдельных жетонов. Порядок маркеров может быть полностью случайным, распределенным по всему абзацу, и документ вернется в результате.
В отличие от этого, match_phrase
ищет:
Потому что он ищет фраз, порядок вопросов токенов. С полом нуля по умолчанию у вас есть поведение с точной фразой.
Если вы увеличиваете отскок, вы можете сделать фразу немного менее точной. Например, slop of one позволяет одно редактирование фразы (редактирование считается вставкой, удалением или перемещением слова). Так помойное одного может также соответствовать любой из этих фраз:
"quick brown fox really jumped"
"the quick brown fox jumped"
"quick brown fox jumped high"
Важно знать, что помои не поддерживают порядок либо. Отстойные два допускает два изменения, так что эта фраза будет также соответствовать:
Первого редактирование двигалось «коричневым» в первую позицию, в то время как вторые редактировать двигались «быстрым» во вторую позицию. Поскольку slop заботится только о номерах редактирования, а не о позиционировании, большие отскоки имеют тенденцию давать вам довольно запутывающие результаты. Слой выше 2-3, вероятно, плохая идея.
Хорошо отметить, что NEST также имеет '.Match() /. MatchPhrase() /. MatchPhrasePrefix() /. Конструкции запросов MultiMatch()'. «Text *()» хранятся для обратной совместимости. –
Ах, да, очень хорошая точка. Спасибо за разъяснения! :) – Zach