2016-06-23 2 views
1

Например, предположим, что у меня есть эти документы:Match X или несколько слов в поле в elasticsearch

{ 
    "_id": 1 
    "title": "The quick brown fox" 
} 
{ 
    "_id": 2 
    "title": "The quick brown fox jumps over the lazy dog" 
} 
{ 
    "_id": 3 
    "title": "The quick brown fox jumps over the quick dog" 
} 
{ 
    "_id": 4 
    "title": "Brown fox brown dog" 
} 

Если я запрашиваю brown документы все документы будут возвращены, но я хотел бы сказать " если запрос не совпадает с двумя или более словами, это не соответствует «или», если запрос не соответствует определенному проценту предложения, это не соответствует »

Сейчас я использую оценка, чтобы решить эту проблему, но это довольно сложно, поэтому я хотел бы узнать, знаете ли вы, что это лучший подход.

Спасибо в продвижении.

ответ

0

Посмотрите minimum_should_match в documentation

Пример:

"query": { 
    "bool": { 
     "must": [{ 
      "term": { 
       "thread.id": inputQuery 
      } 
     }], 
     "should": [ 
      { 
       "match_phrase": { 
        "subject": inputQuery 
       } 
      }, 
      { 
       "match_phrase": { 
        "body": inputQuery 
       } 
      } 
     ], 
     "minimum_should_match": 1 <-- in your case it will be 2 
    } 
} 
+0

Но 'minimum_should_match' покажет, сколько пункты из запроса BOOL должны должны совпадать с тем, чтобы документ быть действительным матч –