Solr的学习使用之(二)schema.xml等配置文件的解析

  上一篇文章已经讲解了如何部署Solr,部署是部署完了,但是总以为内心空空的,没底,里面有N多配置文件,好比schema.xml、solrConfig.xml、solr.xml and so on……都不知道他们是来干吗的,因此要先了解下总体的项目架构、基本原理,才能在后续的工做中,更加熟练,须知挨踢行业,必须求甚解。之前不论是上学,仍是作其余事情,都是在没有了解其原理的基础上就开工,致使了似懂非懂的一种状态,这种状况就是在现有的范围、环境下能够应付得来,可是若是环境一变,那就一筹莫展了。正所谓磨刀不误砍柴工,因此,必须了解下基本原理,才能更好的在路上。数据库

  如下是一些Solr的项目结构、配置文件的讲解:架构

做者讲解了Solr Core、schema.xml、solrConfig.xml文件的含义,以MySql来作对比,这样更加通俗易懂,好比solr的core就至关于数据库,schema.xml至关于表等等spa

http://www.ecmkit.com/zh-hans/taxonomy/term/287.net

  1. schema.xml

schema.xml的结构比较简单,主要分为2 部分types和fields。types部分定义了字段类型的定义信息,好比int,string等;而在fields部分则定义了Solr将会存储哪些信息,fields内的字段是根据你的业务需求来定义的。types和fields的关系其实也很明显,就是types被fields所引用。举例来讲,fields内定义了,该字段的类型是string,而string类型的定义就是在types中定义的。orm

  • types

咱们知道<types>内定义了一些数据类型,这些数据类型会被<fields>引用。就先来看一个常见的定义:<fieldType name="int" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/>。很明显这是一个数值类型的定义,在solr中,数值类型包括int, float, long, double以及日期类型(date),而对于这些数值类型,基本上都是用Trie开始的类型,例如"solr.TrieFloatField","solr.TrieDateField"等。Trie开始的类型能知足你至少95%以上的需求,所以除非有特殊理由,否则仍是老老实实用Trie开始的类型吧。xml

  • fieldType
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
        <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/>
      </analyzer>
</fieldType>

首先应该注意到有2个analyzer。一个是index,另一个是query。也就是说<analyzer type="index">是用在index阶段,而<analyzer type="query">用在查询阶段—你所输入的查询内容也是须要经过分析最终产生token,而后和index里的token匹配。blog

<tokenizer class="solr.StandardTokenizerFactory"/>固然就是对应分析链中的起点Tokenizer。接下来串联了2个filter,分别是solr.StopFilterFactorysolr.LowerCaseFilterFactory。stop word filter就是把那些the, of, on之类的词从token中去除掉,因为这类词在文档中出现的频率很是高,而对文档的特征又没什么影响,因此这类词对查询没什么意义。Lower case filter的做用是将全部的token转换成小写,也就是在最终的index中保存的都是小写。token

如下还有一篇关于schema.xml文件配置的详细解释,赞一个:ci

http://blog.csdn.net/liuweitoo/article/details/8137124rem

  在路上……

相关文章
相关标签/搜索