2015-02-23 4 views
0

Как я могу выполнить запрос «между» в Elasticsearch?Elasticsearch 'между' запросами

В принципе, я хочу этого.

Найти TermA только в том случае, если он существует между фразой1 и фразой2.

Phrase1 --- Терма --- Phrase2 => Match

Конкретный пример:

Исходный текст: "Быстрая коричневая лиса перепрыгнула через ленивую собаку."

Я хочу соответствовать, в порядке.

  • PhraseA = "шустрая"
  • Term = "прыгнули"
  • PhraseB = "ленивую собаку"

Любое руководство будет полезно.

ответ

2

ES поддерживает регулярные выражения.

https://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-regexp-filter.html#query-dsl-regexp-filter

вы должны быть в состоянии сделать что-то вроде:

{ 
    "filtered": { 
     "filter": { 
      "regexp":{ 
       "name.first" : "phraseA.*termA.*phraseB" 
      } 
     } 
    } 
} 
+0

кажется регулярное выражение относится только к терминам и не могут быть применены к фразам. Я отредактирую оригинальную версию. – wbsimms

Смежные вопросы