目的:
1.通过一些配置,在solr的后台能进行查询操作
2.配置使用中文分词器
一、schema.xml文件配置
在schema.xml文件中,主要配置了solrcore的一些数据信息,包括Field和FieldType的定义等信息,在solr中,Field和FieldType都需要先定义后使用。
1.定义Field域
<field name="p_id" type="long" indexed="true" stored="true" required="true"/>
Name:指定域的名称
Type:指定域的类型
Indexed:是否索引
Stored:是否存储
Required:是否必须
multiValued:是否多值,比如商品信息中,一个商品有多张图片,一个Field像存储多个值的话,必须将multiValued设置为true。
2.dynamicField(动态域)
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
Name:指定动态域的命名规则
3.uniqueKey(指定唯一键)
<uniqueKey>id</uniqueKey>
其中的id是在Field标签中已经定义好的域名,而且该域要设置为required为true。
一个schema.xml文件中必须有且仅有一个唯一键
4.copyField(复制域)
<copyField source="name" dest="text"/>
Source:要复制的源域的域名
Dest:目标域的域名
由dest指的的目标域,必须设置multiValued为true。
5.fieldType(定义域的类型)
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<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:指定域类型的名称
Class:指定该域类型对应的solr的类型
Analyzer:指定分析器
Type:index、query,分别指定搜索和索引时的分析器
Tokenizer:指定分词器
Filter:指定过滤器
注:field和filedType需要根据自己的业务需求进行配置
配置完schema.xml后,重启tomcat,登陆到solr的管理后台,点击query–>execute query,即可看到查询出来的数据如图1
图(1)
二、中文分词器
使用ikanalyzer进行中文分词,
1.将ikanalyzer的jar包复制到tomcat7/webapps/solr/WEB-INF/lib目录下如图2.
图(2)
2.将ikanalyzer的扩展词库的配置文件复制到tomcat7/webapps/solr/WEB-INF/classes 目录如图3
图(3)
3.将stopword.dic复制到tomcat7/webapps/solr/WEB-INF/classes/dic目录图4
图(4)
4.配置FieldType如图5
图(5)
5.配置使用中文分词的field如图6
图(6)
6.重启tomcat,进入solr的管理后台,点击Analysis,选择刚创建的name域,即可看到分词效果如图(7)
图(7)
schema.xml配置实例如图8:
图(8)