2017-08-14 17 views
0

我有以下(簡化的)數據如何從某些分詞器賦予令牌更多的權重?

[ 
    { id: 1, customerNumber: "0008", name: "Bob" }, 
    { id: 2, customerNumber: "0854", name: "Sue" }, 
    { id: 3, customerNumber: "0041", name: "Larry" } 
] 

上下文是在一個應用程序的頂部的自動完成搜索欄。

我正在使用自定義正則表達式標記器來修剪前導零,以便用戶不需要輸入它們。所以這讓我令牌

ID 1 => "8" 
ID 2 => "854" 
ID 3 => "41" 

我也有一個邊緣的n-gram分詞器施加給我的令牌

ID 1 => "8" 
ID 2 => "854", "85", "8" 
ID 3 => "41", "4" 

我們的用戶認爲「0008」爲查詢「8更好的匹配「而不是」0854「。但是當他們搜索「8」時,他們會得到諸如「08 **」排名高於「0008」的結果。

搜索「8」時,如何使「0008」的排名高於「0854」?

  • 有時候用戶會在他們的查詢中包含前導零。
  • 我認爲這個問題是,id 1和2標記爲一個單一的「8」,所以從那裏他們是平等的。我只是不知道如何解決這個問題。

查詢:

POST _search 
{ 
    "size": 24, 
    "from": 0, 
    "query": { 
     "multi_match": { 
      "query": "8", 
      "fields": [ 
       "customerNumber", 
       "name" 
      ], 
      "type": "best_fields" 
     } 
    } 
} 

回答

0

我最終獲得通過改變從「令牌過濾器」我的「前導零微調」到「字符過濾器」我想要的結果。

我也改變了「邊緣Ñ革蘭氏令牌過濾」我使用是一個「邊緣Ñ革蘭氏標記者」代替。

這兩個變化一起給了我我想要的結果。

相關問題