2015-08-05 4 views
8

Sto eseguendo una query seguente per aumentare la corrispondenza esatta su multi_match nella ricerca elastica. Ma non ottenendo i risultati attesi.Come aumentare la corrispondenza esatta sulla corrispondenza multipla nella ricerca elastica

Il mio obiettivo è quello di aumentare nel seguente ordine: "sviluppatore Java"> Java e sviluppatore> java o sviluppatore

Qualcuno può aiutare nella risoluzione dei problemi questo? Hai bisogno di sapere come, io la do impulso alla match_phrase qui e come aggiungere campi rimanenti in 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 
      } 
     } 
     ] 
    } 
    } 

Grazie mille per il vostro aiuto.

+0

Eventuali duplicati di [importanza spinta elasticsearch della frase esatta corrispondenza] (https: //stackoverflow.com/questions/18481600/elasticsearch-boost-importance-of-exact-phrase-match) – Jonatan

risposta

7

Ecco cosa ha funzionato per me:

"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

Set di query più partita tipo-most_fields:

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