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,如下:

"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.HTMLStripWhitespaceTokenizerFactorysolr.HTMLStripWhitespaceTokenizerFactory

solr.HTMLStripStandardTokenizerFactory从结果中出去HTML标签,将结果交给StandardTokenizer处理

solr.PatternTokenizerFactory按照规则表达式样式对分本进行分词

Solr有哪些TokenFilterFactories,如下:

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

也站在未路让我牵挂的人。

solr配置schema.xml学习

相关文章:

你感兴趣的文章:

标签云: