学习淘淘商城第三十七课(中文分析器IK-Analyzer的使用)

 在Solr中默认是没有中文分析器的,需要手工配置,配置一个FieldType,在FieldType中指定中文分析器。另外,Solr中的字段必须先定义,后使用。

      下面分步骤进行操作

第一步:将IK-Analyzer的压缩包上传到solr服务器上。如下所示。

[root@itcast07 ~]# cd /usr/local/software/
[root@itcast07 software]# ll
total 176784
drwxr-xr-x 9 root root      4096 Aug  6 18:41 apache-tomcat-7.0.47
-rw-r--r-- 1 root root   8234674 Jul  2 23:57 apache-tomcat-7.0.47.tar.gz
-rw-r--r-- 1 root root     17510 Jul  2 23:57 fastdfs-nginx-module_v1.16.tar.gz
-rw-r--r-- 1 root root    345400 Jul  2 23:57 FastDFS_v5.05.tar.gz
-rw-r--r-- 1 root root   2159463 Aug  6 19:26 IKAnalyzer2012FF_hf1.zip
-rw-r--r-- 1 root root    102378 Jul  2 23:57 libfastcommon-master.zip
-rw-r--r-- 1 root root    804164 Jul  2 23:57 nginx-1.6.2.tar.gz
-rw-r--r-- 1 root root    804164 Sep 16  2014 nginx-1.6.2.tar.gz.1
-rw-r--r-- 1 root root     12248 Jul  2 23:57 ngx_cache_purge-2.3.tar.gz
-rw-r--r-- 1 root root   1738465 Jul 31 02:10 redis-4.0.10.tar.gz
-rw-r--r-- 1 root root     91648 Sep 28  2017 redis-4.0.1.gem
-rw-r--r-- 1 root root  16678101 Aug  1 01:21 ruby-2.2.7.tar.gz
-rw-r--r-- 1 root root 150010621 Aug  6 02:47 solr-4.10.3.tgz
[root@itcast07 software]# 

第二步:安装zip和unzip命令(因为最小化安装的CentOS6没有unzip命令)

[root@itcast07 software]#  yum install zip unzip

第三步:解压,如下所示

[root@solr-server software]# unzip IKAnalyzer2012FF_hf1.zip
[root@itcast07 software]# unzip IKAnalyzer2012FF_hf1.zip
[root@itcast07 software]# ll
total 176788
drwxr-xr-x 9 root root      4096 Aug  6 18:41 apache-tomcat-7.0.47
-rw-r--r-- 1 root root   8234674 Jul  2 23:57 apache-tomcat-7.0.47.tar.gz
-rw-r--r-- 1 root root     17510 Jul  2 23:57 fastdfs-nginx-module_v1.16.tar.gz
-rw-r--r-- 1 root root    345400 Jul  2 23:57 FastDFS_v5.05.tar.gz
drwxr-xr-x 3 root root      4096 Oct  2  2015 IKAnalyzer2012FF_hf1
-rw-r--r-- 1 root root   2159463 Aug  6 19:26 IKAnalyzer2012FF_hf1.zip
-rw-r--r-- 1 root root    102378 Jul  2 23:57 libfastcommon-master.zip
-rw-r--r-- 1 root root    804164 Jul  2 23:57 nginx-1.6.2.tar.gz
-rw-r--r-- 1 root root    804164 Sep 16  2014 nginx-1.6.2.tar.gz.1
-rw-r--r-- 1 root root     12248 Jul  2 23:57 ngx_cache_purge-2.3.tar.gz
-rw-r--r-- 1 root root   1738465 Jul 31 02:10 redis-4.0.10.tar.gz
-rw-r--r-- 1 root root     91648 Sep 28  2017 redis-4.0.1.gem
-rw-r--r-- 1 root root  16678101 Aug  1 01:21 ruby-2.2.7.tar.gz
-rw-r--r-- 1 root root 150010621 Aug  6 02:47 solr-4.10.3.tgz
You have new mail in /var/spool/mail/root
[root@itcast07 software]# 
       解压完后,我们到IKAnalyzer2012FF_hf1目录下查看都有哪些文件,如下所示。其中doc当然是文档了;ext_stopword.dic是停用词词典(在信息检索中,为节省存储空间和提高搜索效率,在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词,这些字或词即被称为Stop Words(停用词)。这些停用词都是人工输入、非自动化生成的,生成后的停用词会形成一个停用词表。但是,并没有一个明确的停用词表能够适用于所有的工具。甚至有一些工具是明确地避免使用停用词来支持短语搜索的。)IKAnalyzer.cfg.xml是配置文件,mydict.dic是扩展词典。IKAnalyzer2012FF_u1.jar是核心包。
[root@itcast07 IKAnalyzer2012FF_hf1]# ll
total 2004
drwxr-xr-x 5 root root    4096 Oct  2  2015 doc
-rw-r--r-- 1 root root     168 Sep 11  2015 ext_stopword.dic
-rw-r--r-- 1 root root 1165908 Sep 11  2015 IKAnalyzer2012FF_u1.jar
-rw-r--r-- 1 root root     419 Sep 11  2015 IKAnalyzer.cfg.xml
-rw-r--r-- 1 root root  841268 Sep 11  2015 IKAnalyzer中文分词器V2012_FF使用手册.pdf
-rw-r--r-- 1 root root   17778 Sep 11  2015 LICENSE.txt
-rw-r--r-- 1 root root      12 Sep 11  2015 mydict.dic
-rw-r--r-- 1 root root     278 Sep 11  2015 NOTICE.txt
[root@itcast07 IKAnalyzer2012FF_hf1]# 

第四步:把分析器的jar包添加到solr工程中

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


第五步:把IKAnalyzer需要的扩展词典及停用词词典、配置文件复制到solr工程的classpath。

       我们需要先在/usr/local/solr/tomcat/webapps/solr/WEB-INF/目录下创建classes目录,如下所示。

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

        下面就是copy操作,如下所示。

[root@itcast07 IKAnalyzer2012FF_hf1]# cp IKAnalyzer.cfg.xml ext_stopword.dic mydict.dic /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes
[root@itcast07 IKAnalyzer2012FF_hf1]# 

        注意:扩展词典及停用词词典的字符集必须是utf-8。不能使用windows记事本编辑。

第六步:配置fieldType。

      需要在solrhome/collection1/conf/schema.xml中配置,我们先到schema.xml所在的目录,如下所示。

[root@itcast07 IKAnalyzer2012FF_hf1]# cd /usr/local/solr/solrhome/collection1/conf
[root@itcast07 conf]# ll
total 292
-rw-r--r-- 1 root root  1068 Aug  6 19:00 admin-extra.html
-rw-r--r-- 1 root root   928 Aug  6 19:00 admin-extra.menu-bottom.html
-rw-r--r-- 1 root root   926 Aug  6 19:00 admin-extra.menu-top.html
drwxr-xr-x 3 root root  4096 Aug  6 19:00 clustering
-rw-r--r-- 1 root root  3974 Aug  6 19:00 currency.xml
-rw-r--r-- 1 root root  1348 Aug  6 19:00 elevate.xml
drwxr-xr-x 2 root root  4096 Aug  6 19:00 lang
-rw-r--r-- 1 root root 78514 Aug  6 19:00 mapping-FoldToASCII.txt
-rw-r--r-- 1 root root  2868 Aug  6 19:00 mapping-ISOLatin1Accent.txt
-rw-r--r-- 1 root root   873 Aug  6 19:00 protwords.txt
-rw-r--r-- 1 root root    33 Aug  6 19:00 _rest_managed.json
-rw-r--r-- 1 root root   450 Aug  6 19:00 _schema_analysis_stopwords_english.json
-rw-r--r-- 1 root root   172 Aug  6 19:00 _schema_analysis_synonyms_english.json
-rw-r--r-- 1 root root 60689 Aug  6 19:00 schema.xml
-rw-r--r-- 1 root root   921 Aug  6 19:00 scripts.conf
-rw-r--r-- 1 root root 74827 Aug  6 19:00 solrconfig.xml
-rw-r--r-- 1 root root    13 Aug  6 19:00 spellings.txt
-rw-r--r-- 1 root root   781 Aug  6 19:00 stopwords.txt
-rw-r--r-- 1 root root  1119 Aug  6 19:00 synonyms.txt
-rw-r--r-- 1 root root  1416 Aug  6 19:00 update-script.js
drwxr-xr-x 2 root root  4096 Aug  6 19:00 velocity
drwxr-xr-x 2 root root  4096 Aug  6 19:00 xslt
[root@itcast07 conf]# 

       编辑schema.xml,使用Shift+G就可以直接到文件的末尾,然后添加如下内容

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

第七步:业务字段配置

       在淘淘商城的商品搜索功能当中,我们可能用到的字段如下,由于数据库中id字段和solr中的id同名,我们便使用solr的id代替商品id。也就是说,我们需要配置6个业务字段。

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

      在schema.xml的末尾添加的业务字段如下所示。

<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" />

第八步:配置复制域

      在schema.xml的末尾添加复制域,如下所示,复制域的好处是可以提高查询效率,原来需要查询多个字段的,现在只需要查询一个字段就可以了(因为各个字段都把内容复制到一块儿了,查询也就方便了)

<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"/>
第九步:重启tomcat

       关闭tomcat的命令如下。

[root@solr-server tomcat]# bin/shutdown.sh

      启动

[root@solr-server tomcat]# bin/startup.sh


        重启之后,我们看看字段是否有我们刚才定义的几个,发现是有的,如下图所示。

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值