分布式搜尋elasticsearch中文分詞整合

2021-08-27 02:52:28 字數 2232 閱讀 8687

elasticsearch官方只提供smartcn這個中文分詞外掛程式,效果不是很好,好在國內有medcl大神(國內最早研究es的人之一)寫的兩個中文分詞外掛程式,乙個是ik的,乙個是mmseg的,下面分別介紹下兩者的用法,其實都差不多的,先安裝外掛程式,命令列:

安裝ik外掛程式:

plugin -install medcl/elasticsearch-analysis-ik/1.1.0

cd config

wget --no-check-certificate

unzip ik.zip

rm ik.zip

安裝mmseg外掛程式:

bin/plugin -install medcl/elasticsearch-analysis-mmseg/1.1.0

cd config

wget --no-check-certificate

unzip mmseg.zip

rm mmseg.zip

分詞配置

ik分詞配置,在elasticsearch.yml檔案中加上

index:

analysis:

analyzer:

ik:alias: [ik_analyzer]

type: org.elasticsearch.index.analysis.ikanalyzerprovider

index.analysis.analyzer.ik.type : 「ik」
這兩句的意義相同

mmseg分詞配置,也是在在elasticsearch.yml檔案中

index:

analysis:

analyzer:

mmseg:

alias: [news_analyzer, mmseg_analyzer]

type: org.elasticsearch.index.analysis.mmseganalyzerprovider

index.analysis.analyzer.default.type : "mmseg"
mmseg分詞還有些更加個性化的引數設定如下

index:

analysis:

tokenizer:

mmseg_maxword:

type: mmseg

seg_type: "max_word"

mmseg_complex:

type: mmseg

seg_type: "complex"

mmseg_******:

type: mmseg

seg_type: "******"

這樣配置完後外掛程式安裝完成,啟動es就會載入外掛程式。

,

"content":}}

}

indexanalyzer為索引時使用的分詞器,searchanalyzer為搜尋時使用的分詞器。

xcontentbuilder content = xcontentfactory.jsonbuilder().startobject()

.startobject("page")

.startobject("properties")

.startobject("title")

.field("type", "string")

.field("indexanalyzer", "ik")

.field("searchanalyzer", "ik")

.endobject()

.startobject("code")

.field("type", "string")

.field("indexanalyzer", "ik")

.field("searchanalyzer", "ik")

.endobject()

.endobject()

.endobject()

.endobject()

定義完後操作索引就會以指定的分詞器來進行分詞。 附:

分布式搜尋elasticsearch配置檔案詳解

elasticsearch的config資料夾裡面有兩個配置檔案 elasticsearch.yml和logging.yml,第乙個是es的基本配置檔案,第二個是日誌配置檔案。elasticsearch.yml檔案中可以配置的如下 cluster.name elasticsearch 配置es的集群...

分布式搜尋方案選型

solr官網 我在學校專案實踐時使用過solandra,它是乙個基於solr和nosql資料庫cassandra的分布式搜尋引擎。cassandra是由facebook開源的nosql數 據庫,facebook的信箱搜尋就是基於它實現的,它是基於列結構的,不同與關聯式資料庫。它的數學模型基於goog...

分布式搜尋演算法

對於搜尋引擎來說,索引存放在成千上萬臺機器上,如何進行分布式搜尋呢?假設搜尋結果是以分頁的方式顯示,以 pagenumber 代表當前頁,從1 開始,以 pagesize 代表頁面大小 預設為 10,以n代表 搜尋伺服器數量 最簡單的 分布式搜尋演算法 為 有一台合併伺服器負責接受使用者的搜尋請求,...