您好,登錄后才能下訂單哦!
進行詞語擴展引入的問題我們在此解決
首先看下效果
GET /operation/_search
{
"query": {
"match": {
"store_name": "凱悅"
}
}
}
結果
{
"took" : 38,
"timed_out" : false,
"_shards" : {
"total" : 3,
"successful" : 3,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 0,
"relation" : "eq"
},
"max_score" : null,
"hits" : [ ]
}
}
此時的分詞器對凱悅
二字的分詞如下
{
"tokens" : [
{
"token" : "凱悅",
"start_offset" : 0,
"end_offset" : 2,
"type" : "CN_WORD",
"position" : 0
}
]
}
因為我們的索引在創建的時候凱悅
詞語還沒有被擴展,所以創建索引的時候分詞器會把凱悅
分成凱
和悅
兩個字,而此時分詞器將凱悅
分詞成一個詞語凱悅
,故而無法搜索到任何文檔。
解決思路一:
首先想到的是重建索引,因為此時分詞器詞典中已經有了凱悅
這個詞語,然后在全量復制文檔到新的索引中,如果是數據量不大的情況下是可以快速遷移,如果數據量大的話不建議這樣做,然而有些情況可能只是部分文檔與要擴展詞語相關,所以這個方法比較笨拙,不建議使用。
解決思路二:
通過Elasticsearch
官方提供的API接口update_by_query
可以將與凱悅
相關的文檔重新分詞
具體操作如下
POST /operation/_update_by_query
{
"query": {
"bool": {
"must": [
{"term": {"store_name": "凱"}},
{"term": {"store_name": "悅"}}
]
}
}
}
意思是必須滿足如上兩個條件的文檔才會被檢索到并進行分詞修改,即文檔名稱同時包含凱
和悅
才被重新分詞
執行結果
{
"took" : 240,
"timed_out" : false,
"total" : 4,
"updated" : 4,
"deleted" : 0,
"batches" : 1,
"version_conflicts" : 0,
"noops" : 0,
"retries" : {
"bulk" : 0,
"search" : 0
},
"throttled_millis" : 0,
"requests_per_second" : -1.0,
"throttled_until_millis" : 0,
"failures" : [ ]
}
可以看到有四條文檔被修改
再次通過凱悅
搜索此時就沒有質保含凱
或悅
的文檔出現了
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。