solr學習之域的管理與中文分析器配置
阿新 • • 發佈:2019-01-15
該文使用 Centos6.5 64 位 solr4.10.3 IK-Analyzer中文分析器
一、solr域
在solr中域的概念與lucene中域的概念相同,資料庫的一條記錄或者一個檔案的資訊就是一個document,資料庫記錄的欄位或者檔案的某個屬性就是一個Field域,solr中對索引的檢索也是對Field的操作。lucene中對域的操作是通過程式碼,solr對域的管理是通過一個配置檔案schema.xml。
solr中域的型別是schema.xml中<fieldType>元素常用的field型別
<!--string 型別 在儲存索引時不進行分詞 sortMissingLast:設定為true時 沒有該filed的資料將排在有該Field的資料後面,忽略請求時的排序規則,預設為false。-->
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<!-- boolean 型別只有兩個值 true false-->
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
<!--用於直接數值搜尋,該型別不分詞 -->
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
<!--用於數值範圍搜尋,進行分詞 通過設定precisionStep的值可以提高檢索速度,8是solr的推薦值 -->
<fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
<fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
<fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
<fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
<!--日期型別-->
<fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
<!--二進位制型別-->
<fieldtype name="binary" class="solr.BinaryField"/>
<!--隨機數型別-->
<fieldType name="random" class="solr.RandomSortField" indexed="true" />
<!-- text_general 型別 進行分詞 -->
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<!--建立索引時的配置 -->
<analyzer type="index">
<!-- tokenizer 建立索引使用的分詞器 -->
<tokenizer class="solr.StandardTokenizerFactory"/>
<!--filter 分詞時的過濾器 class="solr.StopFilterFactory" 處理停用詞 words:配置停用詞-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- filter 分詞時的過濾器 class="solr.LowerCaseFilterFactory" 處理大小寫轉換問題(將大寫轉小寫)-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<!--查詢索引時的配置 -->
<analyzer type="query">
<!-- tokenizer 對查詢條件分詞時使用的分詞器 -->
<tokenizer class="solr.StandardTokenizerFactory"/>
<!--filter 分詞時的過濾器 class="solr.StopFilterFactory" 處理停用詞 words:配置停用詞-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!--filter 分詞時的過濾器 class="solr.SynonymFilterFactory" 處理同義詞 synonyms:配置同義詞