1. 程式人生 > >Solr學習筆記(二)

Solr學習筆記(二)

solr中文分析器的安裝配置:

1、IK Analyzer 是一個開源的,基亍 java 語言開發的輕量級的中文分詞工具包。從 2006年 12 月推出 1.0 版開始, IKAnalyzer 已經推出了 4 個大版本。最初,它是以開源專案Luence 為應用主體的,結合詞典分詞和文法分析演算法的中文分片語件。從 3.0 版本開始,IK 發展為面向 Java 的公用分片語件,獨立亍 Lucene 專案,同時提供了對 Lucene 的預設優化實現。在 2012 版本中,IK 實現了簡單的分詞歧義排除演算法,標誌著 IK 分詞器從單純的詞典分詞向模擬語義分詞衍化。
2、把IKAnalyzer2012FF_u1.jar 新增到 solr 工程的 lib 目錄下:連結:
https://pan.baidu.com/s/1YKMz5xuxUKKuijhR_o_Zcg
提取碼:q3e0
3、建立WEB-INF/classes資料夾把擴充套件詞典、停用詞詞典、配置檔案(ext_stopword.dic,mydict.dic,IKAnalyzer.cfg.xml)放到 solr 工程的 WEB-INF/classes 目錄下。
ext_stopword.dic裡面配置的是一些不參與分詞的字,比如說:是、的、也、了 等等,這些詞使用者也不會去進行搜尋
mydict.dic裡面配置的是讓一些字在分詞的時候成為一個詞語,比如:高富帥三個字,如果不在mydict.dic配置,分詞時就會分出三個詞,但是配置,就會把他們合成一個詞
(注意ext_stopword.dic和mydict.dic裡面的詞語必須是UTF-8編碼的)
4、修改 Solrhome 的 schema.xml(F:\Program Files\solrhome\collection1\conf\schema.xml) 檔案,配置一個 FieldType,使用 IKAnalyzer,新增一段配置:
<fieldType name="text_ik" class="solr.TextField">
	<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

solr中配置域:

1、域相當於資料庫的表字段,使用者存放資料,因此使用者根據業務需要去定義相關的Field(域),一般來說,每一種對應著一種資料,使用者對同一種資料進行相同的操作。
域的常用屬性:
•	name:指定域的名稱
•	type:指定域的型別(如果這一個域要進行中文分詞,那type就要設定成上面設定的型別-->text_ik)
•	indexed:是否索引(需要對這個欄位進行搜尋時,就設定成true,例如:一個商品的title需要設定成true,但是商品的圖片地址image就不需要)
•	stored:是否儲存
•	required:是否必須(表示這個域是否是必須新增的,id域就是必須新增的)
•	multiValued:是否多值
2、solr的複製域:
複製域的作用在於將某一個Field中的資料複製到另一個域中,複製域裡面的內容不需要儲存,所以stored:false,而且它裡面可能會有多個值,所以multiValued:true
比如說:搜尋商品的時候,輸入的關鍵字可能是名稱,品牌,商家名稱,不如不配置複製域,就不知道該去哪個域搜尋,此時可以將名稱,品牌,商家名稱的內容複製到一個複製域中,只搜尋這個複製域即可
3、solr的動態域:
當我們需要動態擴充欄位時,我們需要使用動態域。比如說對於以上商品,商品的規格可能是根據商品的分類有不同的值,此時就需要配置動態域
配置方式:<dynamicField name="item_spec_*" type="string" indexed="true" stored="true" />,*號的位置,可以自己根據實際情況設定不同的值