在Solr中默认是没有中文分析器的,需要手工配置,配置一个FieldType,在FieldType中指定中文分析器。另外,Solr中的字段必须先定义,后使用。
下面分步骤进行操作
第一步:将IK-Analyzer的压缩包上传到solr服务器上。如下所示。
[root@solr-server software]# ll
总用量 335576
drwxr-xr-x. 9 root root 4096 4月 30 05:51 apache-tomcat-7.0.47
-rw-r--r--. 1 root root 8234674 3月 15 01:22 apache-tomcat-7.0.47.tar.gz
-rw-r--r--. 1 root root 2159463 1月 15 19:46 IKAnalyzer2012FF_hf1.zip
-rw-r--r--. 1 root root 183212596 4月 2 10:51 jdk-8u112-linux-x64.gz
-rw-r--r--. 1 root root 150010621 3月 15 01:20 solr-4.10.3.tgz.tgz
[root@solr-server software]#
第二步:安装zip和unzip命令(因为最小化安装的CentOS6没有unzip命令)
[root@solr-server software]# yum install zip unzip
[root@solr-server software]# unzip IKAnalyzer2012FF_hf1.zip
[root@solr-server software]# ll
总用量 335580
drwxr-xr-x. 9 root root 4096 4月 30 05:51 apache-tomcat-7.0.47
-rw-r--r--. 1 root root 8234674 3月 15 01:22 apache-tomcat-7.0.47.tar.gz
drwxr-xr-x. 3 root root 4096 10月 2 2015 IKAnalyzer2012FF_hf1
-rw-r--r--. 1 root root 2159463 1月 15 19:46 IKAnalyzer2012FF_hf1.zip
-rw-r--r--. 1 root root 183212596 4月 2 10:51 jdk-8u112-linux-x64.gz
-rw-r--r--. 1 root root 150010621 3月 15 01:20 solr-4.10.3.tgz.tgz
[root@solr-server software]#
[root@solr-server software]# cd IKAnalyzer2012FF_hf1
[root@solr-server IKAnalyzer2012FF_hf1]# ll
总用量 2004
drwxr-xr-x. 5 root root 4096 10月 2 2015 doc
-rw-r--r--. 1 root root 168 9月 11 2015 ext_stopword.dic
-rw-r--r--. 1 root root 1165908 9月 11 2015 IKAnalyzer2012FF_u1.jar
-rw-r--r--. 1 root root 419 9月 11 2015 IKAnalyzer.cfg.xml
-rw-r--r--. 1 root root 841268 9月 11 2015 IKAnalyzer中文分词器V2012_FF使用手册.pdf
-rw-r--r--. 1 root root 17778 9月 11 2015 LICENSE.txt
-rw-r--r--. 1 root root 12 9月 11 2015 mydict.dic
-rw-r--r--. 1 root root 278 9月 11 2015 NOTICE.txt
[root@solr-server IKAnalyzer2012FF_hf1]#
第四步:把分析器的jar包添加到solr工程中
[root@solr-server IKAnalyzer2012FF_hf1]# cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
[root@solr-server IKAnalyzer2012FF_hf1]#
我们需要先在/usr/local/solr/tomcat/webapps/solr/WEB-INF/目录下创建classes目录,如下所示。
[root@solr-server IKAnalyzer2012FF_hf1]# mkdir /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes
[root@solr-server IKAnalyzer2012FF_hf1]#
[root@solr-server IKAnalyzer2012FF_hf1]# cp IKAnalyzer.cfg.xml ext_stopword.dic mydict.dic /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes
[root@solr-server IKAnalyzer2012FF_hf1]#
第六步:配置fieldType。
需要在solrhome/collection1/conf/schema.xml中配置,我们先到schema.xml所在的目录,如下所示。
[root@solr-server IKAnalyzer2012FF_hf1]# cd /usr/local/solr/solrhome/collection1/conf
[root@solr-server conf]# ll
总用量 292
-rw-r--r--. 1 root root 1068 4月 30 05:58 admin-extra.html
-rw-r--r--. 1 root root 928 4月 30 05:58 admin-extra.menu-bottom.html
-rw-r--r--. 1 root root 926 4月 30 05:58 admin-extra.menu-top.html
drwxr-xr-x. 3 root root 4096 4月 30 05:58 clustering
-rw-r--r--. 1 root root 3974 4月 30 05:58 currency.xml
-rw-r--r--. 1 root root 1348 4月 30 05:58 elevate.xml
drwxr-xr-x. 2 root root 4096 4月 30 05:58 lang
-rw-r--r--. 1 root root 78514 4月 30 05:58 mapping-FoldToASCII.txt
-rw-r--r--. 1 root root 2868 4月 30 05:58 mapping-ISOLatin1Accent.txt
-rw-r--r--. 1 root root 873 4月 30 05:58 protwords.txt
-rw-r--r--. 1 root root 33 4月 30 05:58 _rest_managed.json
-rw-r--r--. 1 root root 450 4月 30 05:58 _schema_analysis_stopwords_english.json
-rw-r--r--. 1 root root 172 4月 30 05:58 _schema_analysis_synonyms_english.json
-rw-r--r--. 1 root root 60689 4月 30 05:58 schema.xml
-rw-r--r--. 1 root root 921 4月 30 05:58 scripts.conf
-rw-r--r--. 1 root root 74827 4月 30 05:58 solrconfig.xml
-rw-r--r--. 1 root root 13 4月 30 05:58 spellings.txt
-rw-r--r--. 1 root root 781 4月 30 05:58 stopwords.txt
-rw-r--r--. 1 root root 1119 4月 30 05:58 synonyms.txt
-rw-r--r--. 1 root root 1416 4月 30 05:58 update-script.js
drwxr-xr-x. 2 root root 4096 4月 30 05:58 velocity
drwxr-xr-x. 2 root root 4096 4月 30 05:58 xslt
[root@solr-server conf]#
编辑schema.xml,使用Shift+G就可以直接到文件的末尾,然后添加如下内容
在淘淘商城的商品搜索功能当中,我们可能用到的字段如下,由于数据库中id字段和solr中的id同名,我们便使用solr的id代替商品id。也就是说,我们需要配置6个业务字段。
1、商品id
2、商品title
3、卖点
4、价格
5、商品图片
6、商品分类名称
7、商品描述
在schema.xml的末尾添加复制域,如下所示,复制域的好处是可以提高查询效率,原来需要查询多个字段的,现在只需要查询一个字段就可以了(因为各个字段都把内容复制到一块儿了,查询也就方便了)
第九步:重启tomcat
关闭tomcat的命令如下。
[root@solr-server tomcat]# bin/shutdown.sh
启动
[root@solr-server tomcat]# bin/startup.sh
下面我们来测试中文分词器是否可用,我们选择item_desc字段,我们在Field Value当中添加一段中文,然后点击"Analyse Values"按钮,就可以开始分析了,分析结果如下。可以看到,我们的中文分析器配置成功了。