欢迎投稿

今日深度:

【solr】——配置文件,

【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>

小结

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

 

www.htsjk.Com true http://www.htsjk.com/solr/34216.html NewsArticle 【solr】——配置文件, 开篇            Solr安装完成后在conf目录下有一个schema.xml文件,这其中是solr使用时需要的核心数据结构的配置,包括数据源,字段类型定义,搜索类型定义等...
相关文章
    暂无相关文章
评论暂时关闭