solr中有自帶的中文分詞,不過它將中文按乙個乙個字進行分詞,這就導致搜尋出的結果讓人不滿
這裡以text_general欄位為例,managed-schema中的配置是這樣寫的:
生成索引和查詢使用的都是solr.standardtokenize***ctory
官方文件有詳細介紹:
您配置的文字欄位中鍵入標記生成器中schema.xml
有乙個元素,作為乙個孩子
:
fieldtype
name
=
"text"
class
=
"solr.textfield"
>
<
analyzer
type
=
"index"
>
<
tokenizer
class
=
"solr.standardtokenize***ctory"
/>
<
filter
class
=
"solr.standardfilte***ctory"
/>
class屬性命名乙個工廠類,在需要時將例項化乙個tokenizer物件。
令牌工廠類實現org.apache.solr.analysis.tokenize***ctory
。tokenize***ctory的create()
方法接受reader並返回乙個tokenstream。當solr建立標記器時,它傳遞乙個提供文字字段內容的reader物件。
所以這種預設的分詞方式對中文來說並不友好,那麼如何在solr中使用自己喜歡的分詞方式?tokenizer指定的class工廠類就是切入口
常用的中文分詞方式:ik ansj jieba
本人對ansj情有獨鍾,於是去寫tokenize***ctory和tokenizer,網上的教程大多是對solr4進行中文分詞,solr4和solr6中的tokenize***ctory
已經發生了變化,factory建立tokenizer時已經不再需要在構造器中新增input引數,而是自動set進去
經過一番嘗試還是沒有成功,知道在github上搜到
tokenkizer中的class屬性指定我們所定義的工廠類
在solradmin介面中看到:solr中的分詞結果為_text_儲存,這裡把text_ansj設定成text_ansj
text_ansj
設定查詢分析欄位為text_ansj
注意已匯入的資料的字段型別設定改為text_ansj
在Solr中配置和使用ansj分詞
原文 在上一節 編譯ansj之solr外掛程式 二 在solr schema.xml中配置好ansj欄位型別。1 建立ansj型別。找到schema.xml,新增ansj型別text ansj org.ansj.solr.ansjtokenize ctory 是ansj lucene外掛程式。2 配...
solr 6 利用solrj方式設定高亮顯示
本人比較討厭各種配置,比較喜歡在 端進行設定控制,下面是用solrj進行設定的 片段 query.sethighlight true 開啟高亮元件或query.setparam hl true query.setparam hl true query.addhighlightfield name 高...
solr6的學習與使用(五) 聯想詞功能
說到搜尋,聯想詞功能肯定是必備的。為實現基於solr的聯想詞功能,做了大量的調研,最終在專案中實現了兩種方案混用的形式。第一種是基於分詞器推薦功能,即spellcheck 第二種是利用自己生成詞庫的方式去實現聯想。那說一下這兩種在solr裡的實現方式吧。在solrconfig.xml中修改如下配置,...