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代表 搜尋伺服器數量 最簡單的 分布式搜尋演算法 為 有一台合併伺服器負責接受使用者的搜尋請求,...