2017-07-26 54 views
0

我有以下查詢:如何根據should子句中的匹配數量對elasticsearch查詢結果進行排名?

{ 
    "query":{ 
     "bool":{ 
     "should":[ 
      { 
       "match_phrase":{ 
        "related":"robotic" 
       } 
      }, 
      { 
       "match_phrase":{ 
        "related":"robotic arm" 
       } 
      }, 
      { 
       "match_phrase":{ 
        "related":"robot kit" 
       } 
      }, 
      { 
       "match_phrase":{ 
        "related":"robot technology" 
       } 
      }, 
      { 
       "match_phrase":{ 
        "related":"build a robot" 
       } 
      }, 
      { 
       "match_phrase":{ 
        "related":"robot for kids" 
       } 
      } 
     ], 
     "minimum_should_match":"1" 
     } 
    } 
} 

我想排名的匹配數量的結果。即匹配所有6個應該子句的結果應該在最上面,而僅匹配一個的結果應該在靠近底部的某個位置。

我該怎麼做?

回答

0

使用查詢時間boosting並且您還可以根據每個術語子句中不同的值來更改少數字段的順序。

{ 
    "query": { 
     "bool": { 
      "should": [{ 
        "match_phrase": { 
         "related": { 
          "query": "robotic", 
          "boost": 5 
         } 
        } 
       }, 
       { 
        "match_phrase": { 
         "related": { 
          "query": "robotic arm", 
          "boost": 5 
         } 
        } 
       }, 
       { 
        "match_phrase": { 
         "related": { 
          "query": "robotic kit", 
          "boost": 5 
         } 
        } 
       }, 
       { 
        "match_phrase": { 
         "related": { 
          "query": "robotic technology", 
          "boost": 5 
         } 
        } 
       } 
      ], 
      "minimum_should_match": "1" 
     } 
    } 
} 
相關問題