首页 > 其他 > 详细

Solr入门之(4)配置文件schema.xml

时间:2014-03-18 12:27:56      阅读:521      评论:0      收藏:0      [点我收藏+]

该配置文件中的标签:<fileTypes>、<fields>、<uniqueKey>、<copyField>


 

标签types中定义了field可以使用的类型,类型定义中可以指定document中字段的常用属性及分词规则
solr中提供了多个预定义的fieldType,另外用户也可以自定义fieldType(比如中文分词的配置)。

一、fieldType常用属性

A、name:    字段类型名    
B、class:    java类名    
C、indexed:    缺省true。 说明这个数据应被搜索和排序,如果数据没有indexed,则stored应是true。    
D、stored:    缺省true。说明这个字段被包含在搜索结果中是合适的。如果数据没有stored,则indexed应是true。    
E、sortMissingLast:    指没有该指定字段数据的document排在有该指定字段数据的document的后面    
F、sortMissingFirst:    指没有该指定字段数据的document排在有该指定字段数据的document的前面    
G、omitNorms:    字段的长度不影响得分和在索引时不做boost时,设置它为true。一般文本字段不设置为true。    
H、termVectors:    如果字段被用来做more like this 和highlight的特性时应设置为true。    
I、compressed:    字段是压缩的。这可能导致索引和搜索变慢,但会减少存储空间,只有StrField和TextField是可以压缩,这通常适合字段的长度超过200个字符。    
J、multiValued:    字段多于一个值的时候,可设置为true。详细说明参见:http://blog.csdn.net/alen1985/article/details/8538942
K、positionIncrementGap:    和multiValued一起使用,设置多个值之间的虚拟空白的数量   

二、fieldType子标签analyzer

  定义该类型字段的分词规则、过滤规则等。type:index/query。
  A、tokenizer:指定该类型的文本分词器,如何切分为tokens。
  B、filter:过滤器,常用的有停用词、同义词、大小写等过滤。可以定义多个。

三、fileType示例

bubuko.com,布布扣
<types>
      <!--
          string类型不分词,但是索引、存储。支持doc values,但是要保证该field是单值并且该field有值。
      -->
    <fieldType name="string" class="solr.StrField" sortMissingLast="true" />

    <!-- boolean type: "true" or "false" -->
    <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/> 

    <!--
      默认的数字类型,如果想要更快的范围查询,考虑使用tint/tfloat/tlong/tdouble类型.
      支持doc values,但是要保证该field是单值并且该field有值。
    -->
    <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"/>

    <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"/>

    <!-- A Trie based date field for faster date range queries and date faceting. -->
    <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>


    <!--Binary data type. The data should be sent/retrieved in as Base64 encoded Strings -->
    <fieldtype name="binary" class="solr.BinaryField"/>

    <fieldType name="pint" class="solr.IntField"/>
    <fieldType name="plong" class="solr.LongField"/>
    <fieldType name="pfloat" class="solr.FloatField"/>
    <fieldType name="pdouble" class="solr.DoubleField"/>
    <fieldType name="pdate" class="solr.DateField" sortMissingLast="true"/>

    <!-- 只按空格分词的分词器 -->
    <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
      <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
      </analyzer>
    </fieldType>

    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        -->
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

    <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <!-- in this example, we will only use synonyms at query time
        <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
        -->
        <!-- Case insensitive stop word removal.
          add enablePositionIncrements=true in both the index and query
          analyzers to leave a ‘gap‘ for more accurate phrase queries.
        -->
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="lang/stopwords_en.txt"
                enablePositionIncrements="true"
                />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EnglishPossessiveFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
        <filter class="solr.EnglishMinimalStemFilterFactory"/>
    -->
        <filter class="solr.PorterStemFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
        <filter class="solr.StopFilterFactory"
                ignoreCase="true"
                words="lang/stopwords_en.txt"
                enablePositionIncrements="true"
                />
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EnglishPossessiveFilterFactory"/>
        <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
    <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory:
        <filter class="solr.EnglishMinimalStemFilterFactory"/>
    -->
        <filter class="solr.PorterStemFilterFactory"/>
      </analyzer>
    </fieldType>

 </types>
bubuko.com,布布扣

   其余详细请参照solr提供的默认schema.xml文件,solr中提供了许多预制的类型。

 


Solr入门之(4)配置文件schema.xml,布布扣,bubuko.com

Solr入门之(4)配置文件schema.xml

原文:http://www.cnblogs.com/tq03/p/3604604.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!