该文使用 Centos6.5 64 位 solr4.10.3 IK-Analyzer中文分析器
一、solr域
在solr中域的概念与lucene中域的概念相同,数据库的一条记录或者一个文件的信息就是一个document,数据库记录的字段或者文件的某个属性就是一个Field域,solr中对索引的检索也是对Field的操作。lucene中对域的操作是通过代码,solr对域的管理是通过一个配置文件schema.xml。
solr中域的类型是schema.xml中<fieldType>元素常用的field类型
<!--string 类型 在存储索引时不进行分词 sortMissingLast:设置为true时 没有该filed的数据将排在有该Field的数据后面,忽略请求时的排序规则,默认为false。-->
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<!-- boolean 类型只有两个值 true false-->
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
<!--用于直接数值搜索,该类型不分词 -->
<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"/>
<!--用于数值范围搜索,进行分词 通过设置precisionStep的值可以提高检索速度,8是solr的推荐值 -->
<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="binary" class="solr.BinaryField"/>
<!--随机数类型-->
<fieldType name="random" class="solr.RandomSortField" indexed="true" />
<!-- text_general 类型 进行分词 -->
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<!--创建索引时的配置 -->
<analyzer type="index">
<!-- tokenizer 创建索引使用的分词器 -->
<tokenizer class="solr.StandardTokenizerFactory"/>
<!--filter 分词时的过滤器 class="solr.StopFilterFactory" 处理停用词 words:配置停用词-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!-- filter 分词时的过滤器 class="solr.LowerCaseFilterFactory" 处理大小写转换问题(将大写转小写)-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<!--查询索引时的配置 -->
<analyzer type="query">
<!-- tokenizer 对查询条件分词时使用的分词器 -->
<tokenizer class="solr.StandardTokenizerFactory"/>
<!--filter 分词时的过滤器 class="solr.StopFilterFactory" 处理停用词 words:配置停用词-->
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<!--filter 分词时的过滤器 class="solr.SynonymFilterFactory" 处理同义词 synonyms:配置同义词