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

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

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

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

  1. schema.xml

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

  • 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开始的类型吧。

  • 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匹配。

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

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

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

  在路上……

  

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

  1. SOLR企业搜索平台 三 (schema.xml配置和solrj的使用)

    标签:solrj 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://3961409.blog.51cto.com/3951409/8 ...

  2. MyBatis学习总结(二)——MyBatis核心配置文件与输入输出映射

    在上一章中我们学习了<MyBatis学习总结(一)——ORM概要与MyBatis快速起步>,这一章主要是介绍MyBatis核心配置文件.使用接口+XML实现完整数据访问.输入参数映射与输出 ...

  3. Spring学习笔记之二----基于XML的Spring AOP配置

    在Spring配置文件中,通常使用<aop:config>元素来设置AOP,其中应包括: <aop:aspect>指定aspect,aspect是一个POJO类,包含了很多的a ...

  4. Maven学习归纳(二)——几个常用命令解析

    Maven的常用命令 第一次执行命令的时候,因为需要下载执行命令的基础环境,所以会从远程仓库下载该环境到本地仓库中 运行mvn命令,必须在pom.xml文件所在的目录 一. JavaProject的p ...

  5. MySQL高级学习笔记(二):mysql配置文件、mysql的用户与权限管理、mysql的一些杂项配置

    文章目录 mysql配置文件 二进制日志log-bin 错误日志log-error 数据文件 两系统 Myisam存放方式 innodb存放方式 如何配置 mysql的用户与权限管理 MySQL的用户 ...

  6. 数据库中间件DBLE学习(二) 学习配置schema.xml

    前言 一边有一个经常引诱我让我"娱乐至死"的视频,还有一个不停"鞭策"我让我快点学习的大BOSS.正是有这两种极端的爱才让我常常在自信中明白自己努力的方向.嗯, ...

  7. 利用SOLR搭建企业搜索平台 之——模式配置Schema.xml

    来源:http://blog.csdn.net/awj3584/article/details/16963525 schema.xml这个配置文件可以在你下载solr包的安装解压目录的\solr\ex ...

  8. Solr 配置文件之schema.xml

    schema.xml这个配置文件的根本目的是为了通过配置告诉Solr怎样建立索引. solr的数据结构例如以下: document:一个文档.一条记录 field:域.属性 solr通过搜索某个或某些 ...

  9. solr 6.0 没有schema.xml未自动创建schema文件

    solr 6.0 没有schema.xml未自动创建schema文件 摘要:在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中 ...

随机推荐

  1. centos 搭建svn服务器

    1 安装svnserve yum install subversion -y 2 创建仓库 mkdir /svn/rep1 -p mkdir /svn/rep2 -p svnadmin create ...

  2. ltp-ddt eth_parallel_processing

    ETH_S_FUNC_PARALLEL_PROCESSING: source 'common.sh'; prepare_nfs_mount.sh "/mnt/nfs_mount"| ...

  3. 占卜DIY

    题目地址 Code #include<iostream> #include<vector> #include<map> using namespace std; s ...

  4. php函数漏洞

    1.ereg — 正则表达式匹配 此函数遇 %00 截断. <?php $a = $_GET['pwd']; var_dump(ereg ("^[0-9]+$", $a)); ...

  5. 四、MyBatis-映射文件

    映射文件指导着MyBatis如何进行数据库增删改查,有着非常重要的意义. <?xml version="1.0" encoding="UTF-8" ?&g ...

  6. maven之assembly插件

    传送门 https://blog.csdn.net/WANGYAN9110/article/details/38646677/ http://blueram.iteye.com/blog/168407 ...

  7. 在vue项目中,解决如何在element表格中循环出图片列!

    效果图: 1,vue项目环境 2,引入element-ui组件 3,制作表格 此处省去制作循环表格数据那步,想看的可以找回我的博客:element中的表格处理:循环出表格数据 今天想在表格出循环出一列 ...

  8. EXP-00091和IMP-00010报错

    原来导出表的库:database ORACLE_SID=TEST0221 版本: 11.2.0.4需要导进的库:database ORACLE_SID=PROD 版本:10.2.0.1因为字符集的问题 ...

  9. centos7升级kernel之后,vmware无法打开

    12.57版本的vmware: https://my.vmware.com/group/vmware/details?downloadGroup=WKST-1257-LX&productId= ...

  10. ANTLR4的IntelliJ IDEA配置

    1.配置的先导工作 jdk配置 IntelliJ IDEA安装配置 配置好ANTLR的java运行时环境,参考 2.下载intellij-plugin-v4.zip 下载地址 3.插件安装 4.测试安 ...