Solr分詞器 過濾器 分析器。

2021-08-09 18:18:58 字數 1719 閱讀 4633

對乙個document進行索引時,其中的每個field中的資料都會經歷分析(分析就是組合分詞和過濾),最終將一句話分成單個的單詞,去掉句子當中的空白符號,大寫轉換小寫,複數轉單數,去掉多餘的詞,進行同義詞代換等等。

如:this is a blog! this,is,a會被去除,最後剩下blog。當然 ! 這個符號也會被去除的。

這個過程是在索引和查詢過程中都會進行的,而且通常兩者進行的處理的都是一樣的,這樣做是為了保證建立的索引和查詢的正確匹配。

分析器(analyzer)是包含兩個部分:分詞器和過濾器。分詞器功能將句子分成單個的詞元token,過濾器就是對詞元進行過濾。

solr自帶了一些分詞器,如果你需要使用自定義的分詞器,那麼就需要修改schema.xml檔案。

schema.xml檔案允許兩種方式修改文字被分析的方式,通常只有field型別為solr.textfield的field的內容允許定製分析器。

方法一:使用任何org.apache.lucene.analysis.analyzer的子類進行設定。

方法二:指定乙個tokenize***ctory,後面跟一系列的tokenfilte***ctories(他們將按照所列的順序發生作用),factories被用來建立分詞器和分詞過濾器,他們用於對分詞器和分詞過濾器的準備配置,這樣做的目的是為了避免通過反射創造的開銷。

......

.......

需要說明的一點是,一些 analyzer,tokenize***ctory 或者 tokenfilte***ctory應該用帶包名的全類名進行指定,請確保他們位於solr的classpath路徑下。對於org.apache.solr.analysis.*包下的類,僅僅通過solr.*就可以進行指定。

如果你需要使用自己的分詞器和過濾器,你就需要自己寫乙個factory,他必須是basetokenize***ctory(分詞器)或basetokenfilte***ctory(過濾器)的子類。就像下面一樣。

public class myfilte***ctory extends basetokenfilte***ctory

對於ik3.1.5版本已經完全支援了solr的分詞,這樣就不用自己來編寫了,而對於中文的切詞的話,ik對solr的支援已經很完美了。

mylink

my link

<?xml?>

hello

hello

hello'); -->

hello

if aif ahello

hello

aaω

"a","an","and","are","as","at","be","but","by","for","if","in","into","is","it","no","not","of","on","or","s","such","t","that","the","their","then","there","these","they","this","to","was","will","with"。

自定義的通用詞表的使用可以通過schema.xml檔案中的「words」屬性來指定,如下。

Solr之分詞器 過濾器與分析器

下面來記錄並分享下solr的分詞器 過濾器 分析器器的用法 一 分詞器 可通過schema.xml檔案自定義分詞器。自定義分詞器,需要自己寫乙個factory,它必須是basetokenize ctory的子類,例如 public class zertest extends basetokenize...

solr英文使用的基本分詞器和過濾器配置

solr英文應用的基本分詞器和過濾器配置 英文應用分詞器和過濾器一般配置順序 索引 index 1 空格whitespacetokenizer 2 過濾詞 停用詞,如 on of a an等 stopfilter 3 拆字worddelimiterfilter 4 小寫過濾lowercasefilt...

solr分詞器安裝

4.在每個核心的schema.xml中配置ik分詞器 其中ismaxwordlength是指分詞的細粒度,可以分別制定index索引和query查詢的分詞細粒度,建議將index的ismaxwordlength設定為false,這樣就採用最細分詞,是索引更精確,查詢時盡量能匹配,而將query的is...