2017-10-17 185 views
1

我們可以在elasticsearch中平等地評分原始字符串和同義詞嗎?在Elasticsearch中同等評分同義詞

例如,我創建了同義詞文件爲:

PVT,私人

有限公司,有限

我創建使用同義詞象徵過濾器的索引。然後我索引的兩個文件:

curl -XPOST "http://localhost:9200/test1/test?pretty" -d 
    '{ "entityName" : "ABC International Pvt Ltd"}' 

curl -XPOST "http://localhost:9200/test1/test?pretty" -d 
    '{ "entityName" : "ABC International Private Limited"}' 

現在,當我搜索「ABC國際私人有限公司」,其總分第一文檔爲1.15和第二文檔0.57。

有沒有辦法同等對待同義詞?

使用下列設置創建索引:

curl -XPUT 'localhost:9200/test1?pretty' -H 'Content-Type: application/json' -d' 
{ 
    "settings" : { 
     "index" : { 
      "analysis":{ 
       "analyzer":{ 
        "my_analyzer":{ 
         "tokenizer":"standard", 
         "filter":["asciifolding", "standard", "lowercase", "my_metaphone", "synonym"] 
        } 
       }, 
       "filter":{ 
        "my_metaphone":{ 
         "type":"phonetic", 
         "encoder":"metaphone", 
         "replace":false 
        }, 
        "synonym" : { 
         "type" : "synonym", 
         "synonyms_path" : "synonyms.txt", 
         "ignore_case" : "true" 
        } 
       } 
      } 
     } 
    } 
}' 
+1

你能說明如何定義索引的設置和映射嗎? – Val

+0

有沒有可能你有一個很少有文件的多分片索引?如果是這樣,請嘗試使用單個分片索引。評分發生在碎片級別,所以如果你沒有很多文檔,你會得到奇怪的結果。 – dshockley

回答

1

添加映射在創建索引做了工作。沒有映射,同義詞令牌過濾器甚至沒有被應用。以下是我用來創建索引的命令。

curl -XPUT 'localhost:9200/test1?pretty' -H 'Content-Type: application/json' -d' 
{ 
"settings" : { 
    "analysis":{ 
    "filter":{ 
     "my_metaphone":{ 
     "type":"phonetic", 
     "encoder":"metaphone", 
     "replace":false 
     }, 
     "synonym" : { 
     "type" : "synonym", 
     "synonyms_path" : "synonym.txt", 
     "ignore_case" : "true" 
     } 
    }, 
    "analyzer":{ 
     "my_analyzer":{ 
     "type":"custom", 
     "tokenizer":"standard", 
     "filter":["asciifolding", "standard", "lowercase", "my_metaphone", "synonym"] 
     } 
    } 
    } 
}, 
"mappings": { 
    "test": { 
    "properties": { 
     "text": { 
     "type": "text", 
     "analyzer": "my_analyzer", 
     "search_analyzer": "my_analyzer" 
     } 
    } 
    } 
} 
}'