上一篇文章已经讲解了如何部署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. vue2.0  之 directive指令 (自定义)

    指令 一.定义: 指令只一种可以附加到DOM元素的微命令(tiny commands). 它们通常以"v-"作为前缀, 以方便Vue知道你在使用一种特殊的标记, 从而确保语法的一致 ...

  2. Tomcat的作用思考及NIO在Tomcat中的应用模型

    Tomcat的作用 平时写完web程序都是直接点击启动,就可以在本机浏览器访问了.但是仔细想想,我们似乎都没有写过浏览器与servlet通信的代码,也没有写过创建request.reponse的代码. ...

  3. NASA CEA 安装指南

    有用的网站: http://www.engr.colostate.edu/~marchese/combustion08/cec.html 1 把三个压缩包解压到同一个Ubuntu文件夹CEAexec下 ...

  4. Linux内核设计与实现 总结笔记(第二章)

    一.Linux内核中的一些基本概念 内核空间:内核可独立于普通应用程序,它一般处于系统态,拥有受保护的内存空间和访问硬件设备的所有权限.这种系统态和被保护起来的内存空间,称为内核空间. 进程上下文:当 ...

  5. Cluster基础(一):配置iSCSI服务、编写udev规则、配置并访问NFS共享、部署Multipath多路径环境

    一.配置iSCSI服务 目标: 本案例要求先搭建好一台iSCSI服务器,并将整个磁盘共享给客户端: 虚拟机添加新的磁盘 将新添加的磁盘分区并创建两个逻辑卷 逻辑卷名称分别为:/dev/myvg/isc ...

  6. P2258子矩阵

    传送 一道看起来就很暴力的题. 这道题不仅暴力,还要用正确的姿势打开暴力. 因为子矩阵的参数有两个,一个行一个列(废话) 我们一次枚举两个参数很容易乱对不对?所以我们先枚举行,再枚举列 枚举完行,列, ...

  7. ElasticSearch ClusterBlockException[blocked by: [FORBIDDEN/12/index read-only / allow delete (api)]锁定状态,无法插入数据

    PUT /twitter/_settings { "index.blocks.read_only_allow_delete": null } 官网给出的解决办法

  8. Oracle创建dblink进行跨数据库操作

    创建dblink:create public database link link_to_test connect to 用户名 IDENTIFIED by "密码大写" usin ...

  9. 测开之路六十:接口测试平台之common目录

    实现接口测试平台使用jsonpath进行取值来断言,效果: 访问页面: 调试功能:http://www.kuaidi100.com/query 保存功能 触发执行功能 查看报告功能 目录结构 comm ...

  10. spss如何选择需要的变量?

    spss如何选择需要的变量? 今天一位网友问我,spss如何在许多字段(变量)中选择我需要的字段,而不显示其他的字段呢? 这个问题问的很好,在实际的数据分析或者挖掘的过程中,都需要用这个来找出对商业问 ...