这一节我们看下schema.xml文件中各个节点的配置极其作用。schema.xml文件中面主要定义了索引数据类型,索引字段等信息。

主要包含了下面节点

1.fieldtype节点

fieldtype节点主要用来定义数据类型。

<fieldType name="string" sortMissingLast="true" class="solr.StrField"/>
<!-- boolean type: "true" or "false" -->
<fieldType name="boolean" sortMissingLast="true" class="solr.BoolField"/>

name指定的是节点定义的名称

class指向org.apache.solr.analysis中定义的类型名称

fieldtype还能够自定义当前类型建立索引和查询数据的时候使用的查询分析器。

tokenizer指定分词器

filter指定过滤器

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.SynonymFilterFactory" ignoreCase="true" expand="true" synonyms="synonyms.txt"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

positionIncrementGap:可选属性,定义在同一个文档中此类型数据的空白间隔。避免短语匹配错误。

positionIncrementGap=100  仅仅对 multiValue = true 的fieldType有意义。

          StrField类型不被分析。而是被逐字地索引/存储

solr.TextField 同意用户通过分析器来定制索引和查询。分析器包含一个分词器(tokenizer)和多个过滤器(filter)

2.field节点

field节点指定建立索引和查询数据的字段。

name代表数据字段名称

type代表数据类型,也就是之前定义的fieldtype

indexed代表是否被索引

stored代表是否被存储

multiValued是否有多个值,假设字段可能有多个值,尽可能设为true

_version节点和root节点是必须保留的,不能删除

<field name="_version_" stored="true" indexed="true" type="long"/>
<field name="_root_" stored="false" indexed="true" type="string"/>
<field name="ProductCode" stored="true" indexed="true" type="string" multiValued="false" required="true"/>
<field name="ProductName" stored="true" indexed="true" type="text_general"/>

3.copyfield节点

通过这个节点。能够把一个字段的值拷贝到还有一个字段中,也能够把多个字段的值同一时候拷贝到还有一个字段中,

这样搜索的时候都能够依据一个字段来进行搜索。

<copyField source="ProductName" dest="text"/>
<copyField source="ProductCode" dest="text"/>

4.dynamicField节点

dynamicField表示动态字段,能够动态定义一个字段,仅仅要符合规则的字段都能够

*_i仅仅要以_i结尾的字段都满足这个定义。

<dynamicField name="*_i" stored="true" indexed="true" type="int"/>

5.其它节点

uniquekey节点是文档的唯一标示。相当于主键。每次更新,删除的时候都依据这个字段来进行操作。

必须填写

<uniqueKey>ProductCode</uniqueKey>

defaultSearchField指定搜索的时候默认搜索字段的值。

<defaultSearchField > text </ defaultSearchField >

solrQueryParser指定搜索时多个词之间的关系,能够是or,and两种

<solrQueryParser defaultOperator="OR" />

6.性能优化

将全部仅仅用于搜索的,而不须要作为结果的field(特别是一些比較大的field)的stored设置为false

            将不须要被用于搜索的。而仅仅是作为结果返回的field的indexed设置为false, 删除全部不必要的copyField声明

            为了索引字段的最小化和搜索的效率,将全部的 text fields的index都设置成false,然后使用copyField将他们都拷贝到一个总的 text field上。

然后进行搜索。

指尖上的电商---(5)schema.xml配置具体解释的更多相关文章

  1. 指尖上的电商---(3)Solr全文搜索引擎的配置

    接上篇,Solr的准备工作完毕后,本节主要介绍Solr的安装,事实上Solr不须要安装.直接下载就能够了      1.Solr配置 下载地址 :http://lucene.apache.org/so ...

  2. 指尖上的电商---(4).net开发solr

    这一节我们看下如何把查询数据放到server端存储,这里我们须要使用client工具来操作与服务端数据打交道,网上有好多基于.NET开发的SOLRclient,我们这里选择easynet.solr,非 ...

  3. 指尖上的电商---(8)Solr中Facet的使用方法

    在大型电子商务站点中,在商品列表页,我们都能够看到商品按分类,品牌,价格的分类显示,例如以下图,这些我们能够使用solr中的facet功能实现. facet的基本功能就是对搜索结果中的商品进行分类. ...

  4. solr的schema.xml配置属性解释

    schema.xml做什么? SOLR加载数据,创建索引和数据时,核心数据结构的配置文件是schema.xml,该配置文件主要用于配置数据源,字段类型定义,搜索类型定义等.schema.xml的配置直 ...

  5. 指尖上的电商---(11)Windows平台部署SolrCloud

    SolrCloud是一种分布式解决方式,是基于zookeeper和solr的,能够简单理解为一种集群,能够提供分布式查询.分布式写索引. SolrCloud的结构大致是这种,一个SolrCloud包含 ...

  6. 指尖上的电商---(2)Solr全文搜索引擎的准备工作

    Solr是一个基于Lucene的全文搜索引擎.提供了更丰富的搜索语言.更灵活的配置.更高的查询效率. 一句话.与Lucene相比.有过之而无不及.这一节里, 主要谈论两个知识点:Jdk的安装和Tomc ...

  7. 指尖上的电商---(12)SolrAdmin中加入多核的还有一种方法

    这一节中我们演示下solr中创建多核的还有一种方法. 接第10讲,首先关闭tomcatserver 1.解压solr-4.8.0后,找到solr-4.8.0以下的example目录下的multicor ...

  8. 指尖上的电商---(10)SolrAdmin中加入多核

    在Solr中有的时候,我们并不仅仅是须要一种形式的索引文件.可能须要多种不同数据的索引文件.这时我们就能够在同一个Solr以下创建 多核. 比方,我们在solr以下想把产品信息和分类信息各存放一个索引 ...

  9. SUSE12SP3-Mycat(2)Schema.xml配置详解

    简介 Schema.xml 作为 MyCat 中重要的配置文件之一,管理着 MyCat 的逻辑库.表.分片规则.DataNode 以及 DataSource.弄懂这些配置,是正确使用 MyCat 的前 ...

随机推荐

  1. Codeforces Round #234 (Div. 2) A. Inna and Choose Options

    A. Inna and Choose Options time limit per test 1 second memory limit per test 256 megabytes input st ...

  2. hive 配置注意事项及初始化hive 元数据

    今天配置hive 犯了一个问题:下载的hive tar.gz 里的conf文件夹仅仅有一个 hive-default.xml.template,于是我就cp  了一份命名为:hive-default. ...

  3. MySQL官方文档

    http://dev.mysql.com/doc/refman/5.7/en/index.html 没有比这更好的MySQL文档了,省的去买书了

  4. DirectX11 学习笔记4 - 一个完整的封装框架

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY3EzNjExMDYzMDY=/font/5a6L5L2T/fontsize/400/fill/I0JBQk ...

  5. log4j日志存储到数据库

    一.前提条件 系统必须是使用LOG4J进行日志管理,否则方法无效. 系统必须包含commons-logging-xxx.jar,log4j-xxx.jar这两个JAR包,XXX为版本号. 二.操作步骤 ...

  6. 【POJ 3904】 Sky Code

    [题目链接] http://poj.org/problem?id=3904 [算法] 问题可以转化为求总的四元组个数 - 公约数不为1的四元组个数 总的四元组个数为C(n,4),公约数不为1的四元组个 ...

  7. Java-MyBatis:MyBatis 中 in 的用法

    ylbtech-Java-MyBatis-杂项:MyBatis  中  in 的用法 1.返回顶部 1. foreach的主要用在构建in条件中,它可以在SQL语句中进行迭代一个集合.foreach元 ...

  8. matlab基本语法

    MATLAB基本语法 点乘运算 , 常与其他运算符 点乘运算,常与其他运算符联合使用(如.\) 矩阵生成 矩阵生成 向量生成或子阵提取本节将会介绍一些MATLAB的基本语法的使用. 持续更新... 在 ...

  9. WCF之操作重载

    服务契约的方法重载,会在装载宿主时,抛出异常. 解决是在操作契约上Name设置为不同值,但是生成的代理会把Name的名称作为方法的名称,不过我们可以手动的修改代理类,使得方法名与服务声明的名称一样. ...

  10. LIst和map的遍历

    1. public static void main(String[] args) { // ArrayList类实现一个可增长的动态数组 List<String> list = new ...