solr6使用ansj做中文分詞

2021-08-01 21:53:26 字數 1892 閱讀 7503

solr中有自帶的中文分詞,不過它將中文按乙個乙個字進行分詞,這就導致搜尋出的結果讓人不滿

這裡以text_general欄位為例,managed-schema中的配置是這樣寫的:

生成索引和查詢使用的都是solr.standardtokenize***ctory

官方文件有詳細介紹:

您配置的文字欄位中鍵入標記生成器中schema.xml有乙個元素,作為乙個孩子

fieldtypename="text"class="solr.textfield">

<analyzertype="index">

<tokenizerclass="solr.standardtokenize***ctory"/>

<filterclass="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中修改如下配置,...