solr配置schema.xml学习

solr创建索引、添加数据的关键是配置schema.xml文件,该文件中主要是完成配置数据源、索引字段、数据类型等定义。同时,该文件的配置直接影响到solr搜索的效率和准确性。

一、搜索类型FileType

name:指的是FileType的名字

class:指向org.apache.solr.analysis包里面对应的class名称,用来定义这个类型的行为

<types>
    <fieldType name="string" class="solr.StrField" sortMissingLast="true" />
	<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
	<fieldtype name="binary" class="solr.BinaryField"/>
	<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
	<fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/>
	<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
	<fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/>
	<fieldType name="tint" class="solr.TrieIntField" precisionStep="8" positionIncrementGap="0"/>
	<fieldType name="tfloat" class="solr.TrieFloatField" precisionStep="8" positionIncrementGap="0"/>
	<fieldType name="tlong" class="solr.TrieLongField" precisionStep="8" positionIncrementGap="0"/>
	<fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" positionIncrementGap="0"/>
	<fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
	<fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/>
	<fieldType name="pint" class="solr.IntField"/>
	<fieldType name="plong" class="solr.LongField"/>
	<fieldType name="pfloat" class="solr.FloatField"/>
	<fieldType name="pdouble" class="solr.DoubleField"/>
	<fieldType name="pdate" class="solr.DateField" sortMissingLast="true"/>
	<fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/>
	<fieldType name="slong" class="solr.SortableLongField" sortMissingLast="true" omitNorms="true"/>
	<fieldType name="sfloat" class="solr.SortableFloatField" sortMissingLast="true" omitNorms="true"/>
	<fieldType name="sdouble" class="solr.SortableDoubleField" sortMissingLast="true" omitNorms="true"/>
	<fieldType name="random" class="solr.RandomSortField" indexed="true" />
</types>
	

注明了若干种搜索类型,字符串,数字,浮点,日期,布尔等。

通常,我们对自己定义的类型建立分析器analyzer,来更好的实现对字段更加准确的搜索功能。分析器通常由分词器tokenizer和过滤器filter组成。通常只有solr.TextField 类型的fieldtype允许定制分析器。通常有一下两种方法创建分析器。

方法一:使用任何 org.apache.lucene.analysis.Analyzer的子类进行设定。

<fieldtype name="nametext" class="solr.TextField">
	<analyzer class="org.apache.lucene.analysis.WhitespaceAnalyzer"/>
</fieldtype>

方法二:指定一个TokenizerFactory ,后面跟一系列的TokenFilterFactories(它们将按照所列的顺序发生作用)

<fieldtype name="text" class="solrTextField">
   <analyzer>
     <tokenizer class="solr.solrStandardTokenizerFactory"/>
     <filter class="solr.solrStandardFilterFactory"/>
     <filter class="solr.solrLowerCaseFilterFactory"/>
     <filter class="solr.solrStopFilterFactory"/>
     <filter class="solr.solrPorterStemFilterFactory"/>
   </analyzer>
 </fieldtype>

需要说明的一点是,Any Analyzer, TokenizerFactory, or TokenFilterFactory 应该用带包名的全类名进行指定,请确保它们位于Solr的classpath 路径下。对于 org.apache.solr.analysis.* 包下的类,仅仅通过solr.*就可以进行指定。

Solr提供的TokenizerFactories,如下:

solr.LetterTokenizerFactory "I can‘t"  "I", "can", "t"                                     
solr.WhitespaceTokenizerFactory "I can" "I", "can"  
solr.LowerCaseTokenizerFactory "I can‘t" "i", "can", "t"  
solr.StandardTokenizerFactory "I.B.M. cat‘s can‘t" ACRONYM: "I.B.M.", APOSTROPHE:"cat‘s", APOSTROPHE:"can‘t" 目前仅仅只有StandardFilter对Token 的类型是敏感的。
solr.HTMLStripWhitespaceTokenizerFactory     solr.HTMLStripWhitespaceTokenizerFactory
 solr.HTMLStripStandardTokenizerFactory     从结果中出去HTML标签,将结果交给StandardTokenizer处理
solr.PatternTokenizerFactory     按照规则表达式样式对分本进行分词

Solr有哪些TokenFilterFactories,如下:

solr.StandardFilterFactory 仅仅作用于由StandardTokenizer产生的Token
solr.LowerCaseFilterFactory  
solr.TrimFilterFactory 去掉Token两端的空白符
solr.StopFilterFactory 去掉如下的通用词,多为虚词。可通过words="stopwords.txt"来指定字符集
solr.KeepWordFilterFactory 作用与solr.StopFilterFactory相反,保留词的列表也可以通过”word”属性进行指定
solr.LengthFilterFactory 过滤掉长度在某个范围之外的词,有min="2" max="5"属性
solr.PorterStemFilterFactory 采用Porter Stemming Algorithm算法去掉单词的后缀,例如将复数形式变成单数形式,第三人称动词变成第一人称,现在分词变成一般现在时的动词
solr.EnglishPorterFilterFactory 关于句子主干的处理,其中的"protected"指定不允许修改的词的文件
solr.SnowballPorterFilterFactory 关于不同语言的词干处理
solr.WordDelimiterFilterFactory 关于分隔符的处理
solr.SynonymFilterFactory 关于同义词的处理
solr.RemoveDuplicatesTokenFilterFactory 避免重复处理

二、定义字段fields

name:字段名

type:之前定义过的各种FieldType

indexed:是否被索引

stored:是否被存储(如果不需要存储相应字段值,尽量设为false)

multiValued:是否有多个值(对可能存在多值的字段尽量设置为true,避免建索引时抛出错误)

compressed(true|false):是否使用gzip压缩存储(仅适用于compressable;TextField和StrField)

compressThreshold():保证压缩到不小于一个integer大小

omitNorms(true|false):当为true时,字段检索时被省略相关的规范

omitTermFreqAndPositions(true|false):当为true时,省略这一领域的长远频率,位置和有效载荷

termVectors(true|false):当设置true,会存储 term vector。当使用MoreLikeThis,用来作为相似词的field应该存储起来。

termPositions:存储 term vector中的地址信息,会消耗存储开销。

termOffsets:存储 term vector 的偏移量,会消耗存储开销。

<fields>
    <field name="id" type="integer" indexed="true" stored="true" required="true" />
    <field name="name" type="text" indexed="true" stored="true" />
    <field name="summary" type="text" indexed="true" stored="true" />
    <field name="author" type="string" indexed="true" stored="true" />
    <field name="date" type="date" indexed="false" stored="true" />
    <field name="content" type="text" indexed="true" stored="false" />
    <field name="keywords" type="keyword_text" indexed="true" stored="false" multiValued="true" />
    <!--拷贝字段-->
    <field name="all" type="text" indexed="true" stored="false" multiValued="true"/>
</fields> 

三、拷贝字段copyField

将所有的 全文本 字段复制到一个字段中,以便进行统一的检索。

<copyField source="name" dest="all"/>
<copyField source="summary" dest="all"/>   

四、其他字段

<uniqueKey>id</uniqueKey>

文档的唯一标识, 必须填写这个field(除非该field被标记required="false"),否则solr建立索引报错。

<defaultSearchField>text</defaultSearchField>

如果搜索参数中没有指定具体的field,那么这是默认的域。优先级比solrconfig.xml中设置的requestHandler低。

<solrQueryParserdefaultOperator="OR" />

配置搜索参数短语间的逻辑,可以是"AND|OR"。

时间: 2024-10-22 09:01:38

solr配置schema.xml学习的相关文章

solr配置-Schema.xml

可参考配置:http://wiki.apache.org/solr/SchemaXml(基本上文档上面讲的已经很详细了) 先来看一下Schema.xml都有什么配置 1,uniqueKey 2,n多name不一样的fieldType 3,各种field :field,dynamicField,copyField 4,默认被注释掉的defaultSearchField,solrQueryParser,Similarity 下面来看一下具体都什么意思: 1,uniqueKey:文档的唯一标识.唯一键

solr的schema.xml配置属性解释

schema.xml做什么? SOLR加载数据,创建索引和数据时,核心数据结构的配置文件是schema.xml,该配置文件主要用于配置数据源,字段类型定义,搜索类型定义等.schema.xml的配置直接影响搜索结果的准确性与效率. <types></types>节点 types节点主要用于搜索类型的定义,这里给出常用类型的定义. 1 <fieldType name="string" class="solr.StrField" sortM

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

前言 一边有一个经常引诱我让我"娱乐至死"的视频,还有一个不停"鞭策"我让我快点学习的大BOSS.正是有这两种极端的爱才让我常常在自信中明白自己努力的方向.嗯,"人间不值得"! SCHEMA.XML介绍 上一篇写了:数据库中间件DBLE学习(一) 基本介绍和快速搭建,主要介绍快速安装.在安装的过程中,我们配置了schema.xml文件.schema.xml是一个比较重要的文件.该文件提供了逻辑库,逻辑表,分片规则,数据分片,物理数据库等配置.它主

solr的schema.xml配置介绍

schema.xml配置介绍如下: 常见的元素有以下几种: <field name="weight" type="float" indexed="true" stored="true"/> <dynamicField name="*_i"  type="int"    indexed="true"  stored="true"/&

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

来源:http://blog.csdn.net/awj3584/article/details/16963525 schema.xml这个配置文件可以在你下载solr包的安装解压目录的\solr\example\solr\collection1\conf中找到,它就是solr模式关联的文件.打开这个配置文件,你会发现有详细的注释.模式组织主要分为三个重要配置 1. types 部分 是一些常见的可重用定义,定义了 Solr(和 Lucene)如何处理 Field.也就是添加到索引中的xml文件属

Solr中schema.xml的解释

接Solr-4.10.2与Tomcat整合.schema.xml位于D:\solr\data\solr\collection1\conf\中.1.fieldType节点    name: FieldType的名称    class: 指向org.apache.solr.analysis包里面对应的class名称,用来定义这个类型的行为    omitNorms: 字段检索时被省略相关的规范    positionIncrementGap:定义在同一个文档中此类型数据的空白间隔,避免短语匹配错误 

3 Solr配置文件 schema.xml

1 添加自己的分词器(mmseg4j) 意思是textCommplex 这个类型,用的是 com.chenlb.mmseg4j.solr.MMSegTokenizerFactory 这个分词器,词库是用到的solr.home目录下面的dic目录, 但是mmseg4j.jar 1.9 把词库包进去了,想要用外面的,需要把里面的删除掉, <filter class="solr.LowerCaseFilterFactory"/>  下面可选择性的添加一些自己的过滤器 <fi

利用SOLR搭建企业搜索平台 之——solr配置solrconfig.xml

solrconfig.xml这个配置文件可以在你下载solr包的安装解压目录的E:\Work\solr-4.2.0-src-idea\solr\example\solr\collection1\conf中找到,这个配置文件内容有点多,主要内容有:使用的lib配置,包含依赖的jar和Solr的一些插件;组件信息配置;索引配置和查询配置,下面详细说一下索引配置和查询配置. 1索引indexConfig Solr 性能因素,来了解与各种更改相关的性能权衡. 下表概括了可控制 Solr 索引处理的各种因

solr配置-Solrconfig.xml

可参考配置:http://wiki.apache.org/solr/SolrConfigXml lib <lib> 标签用于引入solr引用SolrPlugins的jar包,当dir对应的目录不存在时,solr会忽略此, <lib dir="../../../contrib/extraction/lib" regex=".*\.jar" /> dataDir parameter 配置data目录的存放位置,data目录中存放了index和lo