ElasticSearch實(shí)現(xiàn)拼音以及多音字搜索

  • elastic默認(rèn)的分詞插件對(duì)中文支持不好,比如對(duì)中華人民共和國(guó)進(jìn)行分詞的時(shí)候:
  1.使用默認(rèn)分詞插件,會(huì)分別搜索中、華、人、民、共、和、國(guó)
  2. 推薦使用大名鼎鼎的ik分詞器, 地址:https://github.com/medcl/elasticsearch-analysis-ik/
  3. 安裝方法如前面的一片文章所述,建議使用ik_smarter就夠了,上面的分詞會(huì)變成: 中華、人民、共和國(guó)
  4. 使用ik之后,還是有一個(gè)問(wèn)題,對(duì)于中文用戶,很多人在搜索的時(shí)候不一定會(huì)切換到中文的輸入法,也就是輸入的是拼音, 但是ik并不支持拼音搜索,這樣搜出來(lái)的結(jié)果是英文或者是不準(zhǔn)確的,所以需要使用拼音分詞插件:https://github.com/medcl/elasticsearch-analysis-pinyin
  5. 安裝方法依舊如前面所述
  • 安裝插件之后,需要重新更新一下mapping,以實(shí)現(xiàn)拼音+多音字的搜索結(jié)果:
topic = \
{
    "settings": {
        "analysis": {
            "analyzer": {
                "ik_pinyin_analyzer": {
                    "type":"custom",
                    "tokenizer": "ik_smart",
                    "filter": ["my_pinyin","word_delimiter"]
                }
            },
            "filter": {
                "my_pinyin": {
                    "type": "pinyin",
                    "keep_first_letter": False,
                    "keep_full_pinyin": True,
                    "keep_none_chinese": True,
                    "keep_none_chinese_in_first_letter": True,
                    "keep_original": False,
                    "limit_first_letter_length": 16,
                    "lowercase": True,
                    "trim_whitespace": True,
                }
            }
        }
    },
    "mappings" : {
        "topic" : {
            "properties" : {
                "creator" : {
                    "type" : "string",
                    "index": "not_analyzed"
                },
                "postCount" : {
                    "type" : "integer",
                    "index": "not_analyzed"
                },
                "followNum" : {
                    "type" : "integer",
                    "index": "not_analyzed"
                },
                "creatTime" : {
                    "type" : "date",
                    "index": "not_analyzed"
                },
                "tagName": {
                    "type": "text",
                    "index": "analyzed",
                    "store": "no",
                    "analyzer": "ik_pinyin_analyzer",
                    "term_vector": "with_positions_offsets",
                    "boost": 10,
                    "fields" : {
                        "untouch": {
                            "type": "keyword"
                        }
                    }
                }
            }
        }
    }
}
  • 搜索實(shí)現(xiàn)的結(jié)果如下圖所示:


    Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 包括內(nèi)容: IK分詞組件的添加和配置 索引建立及高亮搜索示例 添加自定義分詞的測(cè)試 版本: ES - 2.4.5,...
    君劍閱讀 9,017評(píng)論 0 0
  • 摘要: 原創(chuàng)出處 www.bysocket.com 「泥瓦匠BYSocket 」歡迎轉(zhuǎn)載,保留摘要,謝謝! 『 春...
    子木聊出海閱讀 3,510評(píng)論 1 51
  • 1.Search Engine 目前主流的開源搜索引擎主要有兩個(gè),一個(gè)是基于Java的Apache Lucene,...
    秦漢郵俠閱讀 888評(píng)論 0 1
  • 我買了一個(gè)筆記本 很貴, 特別貴, 我不敢輕易在上面寫字 我也許會(huì)寫錯(cuò)別字 也許會(huì)寫很多病句 也許會(huì)涂改 總之它會(huì)...
    蘇打熊閱讀 189評(píng)論 0 0
  • 一直喜歡一首歌,大概就是像:一直想單曲循環(huán)新發(fā)現(xiàn)的一首歌時(shí),如果是這首歌排在后面,那就不會(huì)反感。它的魅力給予了它像...
    鶯時(shí)閱讀 200評(píng)論 0 1

友情鏈接更多精彩內(nèi)容