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有哪些TokenFilterFactories,如下:
二、定义字段fields name:字段名 compressed(true|false):是否使用gzip压缩存储(仅适用于compressable;TextField和StrField) <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"。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |