2015-08-05 31 views
8

Mam uruchomione następujące zapytanie, aby zwiększyć dopasowanie ścisłe w porównaniu do multi_match w wyszukiwaniu elastycznym. Ale nie przynosi oczekiwanych rezultatów.Jak ulepszyć dopasowanie ścisłe przez wiele dopasowań w wyszukiwaniu elastycznym

Moim celem jest zwiększenie w następującej kolejności: "Java developer"> Java i programisty> Java lub dewelopera

Czy ktoś może pomóc w rozwiązaniu tego? Trzeba wiedzieć, jak mogę dać impuls do match_phrase tutaj i jak dodać pozostałe pola w match_phrase

"query": { 
    "bool": { 
     "must": [ 
     { 
      "multi_match": { 
      "query": "java developer", 
      "fields": [ 
       "title", 
       "content", 
       "tags", 
       "summary" 
      ] 
      } 
     } 
     ], 
     "should": [ 
     { 
      "match_phrase": { 
      "title": "java developer" 
      } 
     }, 
     { 
      "multi_match": { 
      "query": "java developer", 
      "fields": [ 
       "title", 
       "content", 
       "tags", 
       "summary" 
      ], 
      "operator": "and", 
      "boost": 4 
      } 
     } 
     ] 
    } 
    } 

Wielkie dzięki za pomoc.

+0

Możliwy duplikat [elasticsearch znaczenie doładowania dokładnego dopasowania do wyrażenia] (https: //stackoverflow.com/questions/18481600/elasticsearch-boost-importance-of-exact-phrase-match) – Jonatan

Odpowiedz

7

Oto co pracował dla mnie:

"query": { 
    "bool": { 
     "must": [ 
     { 
      "multi_match": { 
      "query": "java developer", 
      "fields": [ 
       "title", 
       "content", 
       "tags", 
       "summary" 
      ] 
      } 
     } 
     ], 
     "should": [ 
     { 
      "multi_match": { 
      "query": "java developer", 
      "fields": [ 
       "title", 
       "content", 
       "tags", 
       "summary" 
      ], 
      "type": "phrase", 
      "boost": 10 
      } 
     }, 
     { 
      "multi_match": { 
      "query": "java developer", 
      "fields": [ 
       "title", 
       "content", 
       "tags", 
       "summary" 
      ], 
      "operator": "and", 
      "boost": 4 
      } 
     } 
     ] 
    } 
    } 
1

Ustaw wielostronicowych dopasowania zapytania za typ do most_fields:

"query": { 
    { 
    "multi_match" : { 
     "query":  "java developer", 
     "type":  "best_fields", 
     "fields":  ["title", "content", "tags", "summary" ] 
    } 
    } 
}