2016-03-04 29 views
0

我有一個文件,讓說,它具有屬性排序對不同性質

"title": { 
    "type": "string" 
    }, 
    "author": { 
    "type": "string" 
    } 

通常,當我搜索我想有標題 更高的分數,但如果我搜索一個作家我想獲得更高的分數對作者財產。

Leta說我搜索地獄。

我得到(我想)

1. Inferno 
2. Fernando 
3. furnished. 

但現在我進入丹·布朗 我要得到相同的結果,而不是

Danish meal 
DanSomething 
Dan.. 

我不能知道之前,我搜索,如果我搜索作者或標題。 你有什麼想法我會如何實現這一點?

+0

你使用什麼查詢? – Richa

回答

0

實現此目的最簡單的方法是通過提高author字段上的查詢,以便如果存在作者匹配,它將出現在title字段的其他匹配下方。

舉例來說,你可以嘗試這樣的:

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "query_string": { 
      "query": "Dan Brown", 
      "fields": [ 
       "title" 
      ] 
      } 
     }, 
     { 
      "query_string": { 
      "query": "Dan Brown", 
      "boost": 2, 
      "fields": [ 
       "author" 
      ] 
      } 
     } 
     ] 
    } 
    } 
} 

在上面的查詢,我們給的2升壓匹配Dan Brown作爲一個作家的結果。

請注意,這只是給你一個引導,它絕對不是故事的結尾。爲了獲得完美的結果,可能需要創建一個或多個自定義分析器,以正確索引您需要搜索的令牌。但這應該讓你走。