一、思想
1、在solr中默认是没有中文分析器,需要手工配置,配置一个FieldType,在FieldType中指定中文分析器。
2、Solr中的字段必须是先定义后使用。
二、步骤
1. 配置IKAnalyzer的jar包
将上面图片中的IK Analyzer 2012FF_hf1文件夹通过xftp导入到usr/local中
2. 将IKAnalyzer2012FF_u1.jar拷贝到 Tomcat的webapps/solr/WEB-INF/lib 下
[root@localhost IK Analyzer 2012FF_hf1]# cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
3. IKAnalyzer的配置文件
思想:
需要把IKAnalyzer需要的扩展词典及停用词典、配置文件复制到solr工程的classpath 下。
3.1 在Tomcat的webapps/solr/WEB-INF/下创建classes目录
[root@localhost WEB-INF]# mkdir classes
3.2 复制配置文件到这个目录
/usr/local/solr/tomcat/webapps/solr/WEB-INF/classes
将IKAnalyzer.cfg.xml、ext_stopword.dic 、mydict.dic copy到 Tomcat的webapps/solr/WEB-INF/classes
执行命令:
[root@localhost IK Analyzer 2012FF_hf1]# cp ext_stopword.dic IKAnalyzer.cfg.xml mydict.dic /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes
注意:ext_stopword.dic 和mydict.dic必须保存成无BOM的utf-8类型。不要用widows记事本编辑
3.3 修改schema.xml文件
[root@localhost solr]# vim solrhome/collection1/conf/schema.xml
Vi 和vim文档使用技巧 G或者 快捷键Shift + g 跳转到文档最后 gg跳转文档第一行
修改Solr的schema.xml文件,添加下面配置代码到最后一行:
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
Esc :wq!保存退出
4. 设置业务系统Field
这个得和数据库里的业务字段进行对应配置,参考京东配置
业务字段判断标准:
- 在搜索时候是否需要在此字段上进行搜索。例如:商品名称、商品卖点、商品描述等...
- 后续的业务是否需要用到此字段。例如:商品id。
需要用到的字段:
- 商品id
- 商品title
- 卖点
- 价格
- 商品图片
- 商品分类名称
- 商品描述
Solr中的业务字段:
1.id——》商品id
其他的对应字段创建solr的字段。
设置业务系统Field
<field name="item_title" type="text_ik" indexed="true" stored="true"/>
<field name="item_sell_point" type="text_ik" indexed="true" stored="true"/>
<field name="item_price" type="long" indexed="true" stored="true"/>
<field name="item_image" type="string" indexed="false" stored="true" />
<field name="item_category_name" type="string" indexed="true" stored="true" />
<field name="item_desc" type="text_ik" indexed="true" stored="false" />
<field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/>
<copyField source="item_title" dest="item_keywords"/>
<copyField source="item_sell_point" dest="item_keywords"/>
<copyField source="item_category_name" dest="item_keywords"/>
<copyField source="item_desc" dest="item_keywords"/>
把以上内容复制到 schema.xml文件中
配置文件说明:
name:数据库对应字段
stored:定义是否存储,false不存储,true是存储,定义是否存储的标准是,看我们这些信息是否展现给客户,如果展现的话就定义为true存储,如果不展现只是在搜索的时候用的话,那我们就定义成为false不存储
multiValued:复制域,创建复制域是solr自带的一个功能,把上面所有的域都放到一个item_keywords名字的域里,都从这一个域里取内容会快一些,就像数据库里从一张表里取数据肯定比从多张表里取数据速度要快。
5. 重新启动tomcat
5.1 验证中文分析器是否配置成功
5.2 使用方法
出现以下内容说明配置成功
三、索引的增删改查
在之前的文件中有详细说明,这里就不再赘述了
地址:https://mp.csdn.net/postedit/85224434