淘淘商城31-搜索服务搭建之solr业务域的创建

版权声明:本文为博主原创文章,如有转载请注明出处,谢谢。 https://blog.csdn.net/pdsu161530247/article/details/81914617

为商城中的搜索商品做准备工作

创建对应的业务域,需要创建FieldType,创建FieldType需要指定中文分析器。

1.指定中文分析器

把中文分析器添加到solr工程中。

上传IKAnalyzer2012FF_u1.jar到/root下

把IKAnalyzer2012FF_u1.jar添加到solr工程的lib目录下

[root@localhost ~]# cp IKAnalyzer2012FF_u1.jar  /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/

把扩展词典、配置文件放到solr工程的WEB-INF/classes目录下。

创建classess目录

[root@localhost /]# cd /usr/local/solr/tomcat/webapps/solr/WEB-INF/
[root@localhost WEB-INF]# mkdir classes

复制 ext_stopword.dic、IKAnalyzer.cfg.xml、mydict.dic到classes下

[root@localhost WEB-INF]# cp /root/IKAnalyzer/*.dic *.xml  ./classes/

2.配置一个FieldType,指定使用IKAnalyzer

修改solr的schema.xml文件。

cd /usr/local/solr/solrhome/collection1/conf
vim schema.xml

按shift+g到文末,在末尾添加FieldType。

<fieldType name="text_ik" class="solr.TextField">
  <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>

3.配置业务域

由于数据库中id字段和solr中的id同名,我们便使用solr的id代替商品id。也就是说,我们需要配置6个业务字段。

1、商品id
2、商品title
3、卖点
4、价格
5、商品图片
6、商品分类名称
7、商品描述

配置业务域,type指定使用自定义的FieldType

type是否分词(String不分词),在schema.xml中定义的类型比如:text_ik,表示要分词。indexed是否索引,stored是否存储

copyField 表示复制域的好处是可以提高查询效率,原来需要查询多个字段的,现在只需要查询一个字段就可以了(因为各个字段都把内容复制到一块儿了,查询也就方便了)字段指定到item_keywords一起搜索。

multiValued表示多词

<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末尾

4.重启tomcat,测试访问

在tomcat/bin下

shutdown.sh
startup.sh

输入几个刚定义的字段,测试成功

来测试中文分词器是否可用,我们选择item_desc字段,我们在Field Value当中添加一段中文,然后点击"Analyse Values"按钮,就可以开始分析了,分析结果如下。可以看到,我们的中文分析器配置成功了

猜你喜欢

转载自blog.csdn.net/pdsu161530247/article/details/81914617
今日推荐