solrcore中有一个非常重要的配置文件:schema.xml。这里面定义了域以及域的类型。
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
- name:域的名称
- type:域的类型
- indexed:是否索引
- stored:是否存储
- required:是否必须
- multivalued:是否多值,solr允许一个field存储多个值,比如存储一个用户的好友id(多个)。
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
- name:域的类型,对应field标签的type
- class:域类型的solr类型,如果是TextField,就需要添加分词器
- analyzer:分词器配置,index是创建索引时的分词器。query是搜素是使用的分词器,一般情况下是同一个。
- tokenizer:指定分词器
- filter:指定过滤器
配置IK分词器:
下载路径:https://code.google.com/archive/p/ik-analyzer/downloads
jar包配置:把解压后的jar包(IKAnalyzer2012FF_u1.jar)添加到solr/WEB-INF/lib目录下。
配置文件停用词配置:复制IKAnalyzer的配置文件(IKAnalyzer.cfg.xml)和自定义词典(mydict.dic)和停用词词典(ext_stopword.dic)到solr的solr/WEB-INF/classes目录下。
schema.xml配置:添加自定义的field Type,使用中文分词器。
<!-- IKAnalyzer-->
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
索引时配置:在索引时 需要在schema.xml中定义Field, field标签下type的属性为text_ik。比如:
<!--IKAnalyzer Field-->
<field name="content_ik" type="text_ik" indexed="true" stored="true" />
重启tomcat就行了。