【solr】——配置文件

开篇

          Solr安装完成后在conf目录下有一个schema.xml文件,这其中是solr使用时需要的核心数据结构的配置,包括数据源,字段类型定义,搜索类型定义等。schema.xml的基结构如下:

<schema>
   < fieldType ></ fieldType >
   < field ></field >
   <copyField></copyField>
   <dynamicField ></ dynamicField >
   <uniqueKey></uniqueKey>
</schema>



正文

fieldType:定义field的类型,包括下面一些属性

          示例:

<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" />
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.StandardTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
     </analyzer>
</fieldType>


  • name:必填,被field配置使用
  • class:必填,filedType的实现类。solr.TextField是路径缩写,"等价于"org.apache.solr.schema.TextField"
  • multiValued:
  • positionIncrementGap:指定mutiValued的距离
  • ananlyzer:如果class是solr.TextField,这个配置是必填的。告诉solr如何处理某些单词、如何分词,比如要不要去掉”a”,要不要全部变成小写……
    • type:index或query
    • tokenizer:分词器,比如:StandardTokenizerFactory
    • filter:过滤器,比如:LowerCaseFilterFactory

 

field字段(Field)是构成Document的基本单元,定义一个document中的各个fields

          示例: 

 <field name="title" type="text_general" indexed="true"stored="true" multiValued="true"/>
 <field name="subject" type="text_general" indexed="true"stored="true"/>
 <field name="description" type="text_general"indexed="true" stored="true"/>
 <field name="comments" type="text_general"indexed="true" stored="true"/>

  • name:必填。该field的名字。前后都有下划线的name是系统保留的名字,比如“_version_”
  • type:必填。类型,对应于fieldType的name
  • indexed:true/false,是否为该field建立索引,以让用户可以搜索它、统计它(facet)
  • stored:true/false,定义这个field是否可以返回给查询者
  • multiValued:true/false,是否可以容纳多个值(比如多个copyField的dest指向它)。如果是true,则该field不能被排序、不能作为uniqueKey
  • required:true/false,告诉solr这个field是否接受空值,缺省为false
  • docValues:true/false,建立document-to-value索引,以提高某些特殊搜索的效率(排序、统计、高亮)

 

copyField把一个field的内容拷贝到另外一个field中。一般用来把几个不同的fieldcopy到同一个field中,以方便只对一个field进行搜索。

          示例:

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

  • source:被拷贝的field,支持用通配符指定多个field,比如:*_name
  • dest:拷贝到的目的field
  • maxChars:最大字符数

 

dynamicField:用通配符定义一个field来存在没有被field定义的漏网之鱼

          示例:

          <dynamicField name="*_i" type="int" indexed="true"stored="true"/>
          <dynamicField name="*_is"type="int" indexed="true" stored="true"multiValued="true"/>
          <dynamicField name="*_s" type="string" indexed="true" stored="true" />

  • name:使用通配符,比如“*_i”,来处理类似“cost_i”之类的field

         

uniqueKey指定一个field为唯一索引

          示例:

<uniqueKey>id</uniqueKey>

小结

         该配置文件中要有默认的配置,在这里面我们可以添加自定义的配置,下篇博客看一下实际要应用。

 

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值