solr中 schema.xml配置文件

schema.xml配置文件是用於定義index索引庫的結構,有點類似於數據表表的定義。

當我們打開schema.xml配置文件時,也許會被裏面密密麻麻的代碼所嚇倒,其實不必驚慌,裏面其實就兩個東西filedfieldType

1、field–類似於數據表的字段

<fields>
      <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" omitNorms="true"  default="df"/>
   .....//省略
  <field name="_version_" type="long" indexed="true" stored="true"/><!--此字段爲最好不要刪除哦!非要刪除,請把solrconfig.xml中的updateLog註釋,但不建議這樣-->
</fields>
屬性介紹:
(1)、name:字段名稱
(2)、type:字段類型(此處type不是java類型,而是下面定義的fieldType
(3)、indexed:是否索引?true--solr會對這個字段進行索引,只有經過索引的字段才能被搜索、排序等;false--不索引
(4)、stored:是否存儲?true--存儲,當我們需要在頁面顯示此字段時,應設爲true,否則false。
(5)、required:是否必須?true--此字段爲必需,如果此字段的內容爲空,會報異常;false--不是必需
(6)、multiValued:此字段是否可以保存多個值?
(7)、omitNorms:是否對此字段進行解析?有時候我們想通過某個字段的完全匹配來查詢信息,那麼設置 indexed="true"、omitNorms="true"。
(8)、default:設置默認值

2、fieldType–字段類型

<types>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
.....//省略
<fieldType name="text_general" positionIncrementGap="100">
        <analyzer type="index">
                    <tokenizer/>
                    <filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
                     <filter/>
        </analyzer>
        <analyzer type="query">
              <tokenizer/>
              <filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
               <filter synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
                <filter/>
         </analyzer>
 </fieldType>
</types>
屬性說明:
(1)、name:類型名稱,<field>中的type引用的就是這個name
(2)、class:solr自定義的類型
(3)、<analyzer type="index">定義建立索引時使用的分詞器及過濾器
(4)、<analyzer type="query">定義搜索時所使用的分詞器及過濾器
(5)、 <tokenizer/>定義分詞器
(6)、<filter/>定義過濾器

3、uniqueKey

<uniqueKey>id</uniqueKey>
類似於數據表數據的id,solr索引庫中最好定義一個用於標示document唯一性的字段,此字段主要用於刪除document。

4、<copyField/>

<copyField source=”cat” dest=”text”/>
實際項目中爲了方便查詢,我們會把多個需要查詢的字段合併到一個字段裏,方便查詢。

舉例:

        產品搜索,關鍵詞不應該只匹配產品標題,還應該匹配產品關鍵詞及產品簡介等,那麼在建立索引庫時,可以把標題、產品關鍵詞、簡介放到一個叫text的字段中,搜索時直接搜text字段。

<fields>
     <field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
     <field name="title" type="text_general" indexed="true" stored="true"/>
     <field name="keywords" type="text_general" indexed="true" stored="true" omitNorms="true"/>
     <field name="description" type="string" indexed="true" stored="true" multiValued="true"/>
</fields>

<copyField source="title" dest="text"/>
<copyField source="keywords" dest="text"/>
<copyField source="description" dest="text"/>

更多詳細的內容請親自研究schema.xml配置文件



轉自:http://www.luoshengsha.com/213.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章