目前服务器上已经安装了Tomcat和JDK.所以直接进行安装solr。
查看Tomcat是否运行。如果运行就停掉Tomcat。
首先在服务器/usr/local/路径下新建一个solr文件夹,里面存放solr的安装包。
进入solr-4.10.3查看内容
[root@iZbp1g8nzni5ljttss14i3Z solr]# cd solr-4.10.3
[root@iZbp1g8nzni5ljttss14i3Z solr-4.10.3]# ll
total 996
drwxr-xr-x 2 root root 4096 Mar 14 10:44 bin
-rw-r--r-- 1 root root 406208 Dec 10 2014 CHANGES.txt
drwxr-xr-x 13 root root 4096 Dec 10 2014 contrib
drwxr-xr-x 4 root root 4096 Mar 14 10:44 dist
drwxr-xr-x 17 root root 4096 Mar 14 10:44 docs
drwxr-xr-x 15 root root 4096 Mar 14 10:44 example
drwxr-xr-x 2 root root 28672 Mar 14 10:44 licenses
-rw-r--r-- 1 root root 12646 Dec 1 2014 LICENSE.txt
-rw-r--r-- 1 root root 501873 Dec 8 2014 LUCENE_CHANGES.txt
-rw-r--r-- 1 root root 24655 Dec 1 2014 NOTICE.txt
-rw-r--r-- 1 root root 5344 Dec 1 2014 README.txt
-rw-r--r-- 1 root root 850 Dec 1 2014 SYSTEM_REQUIREMENTS.txt
将dist\solr-4.10.3.war拷贝到Tomcat的webapp目录下改名为solr.war。
启动tomcat后,solr.war自动解压,将原来的solr.war删除。
拷贝example\lib\ext 目录下所有jar包到Tomcat的webapp\solr\WEB-INF\lib目录下。
在/usr/local/新建一个文件夹solrhome 。solrhome是存放solr服务器所有配置文件的目录。
然后把example下的solr文件夹内的所有都拷贝到 新建的那个solrhome里面。
然后在指定solrhome的位置,修改Tomcat下的webapps/solr/WEB-INF/web.xml文件
这就是指定位置。
然后启动Tomcat。在浏览器输入服务器地址,带上/solr 查看solr页面
这样就算是安装完成了。
接下来就是solr配置中文分析器及业务字段
在solr中默认是没有中文分析器的,需要手工配置,配置一个FieldType, 在FieldType中指定中文分析器
solr中的字段必须是先定义后使用。
配置中文分析器:
1,使用IK-Analyzer 上传这个压缩包,解压后
将IKAnalyzer2012FF_u1.jar拷贝到 Tomcat的webapps/solr/WEB-INF/lib 下。
2,在Tomcat的webapps/solr/WEB-INF/下创建classes目录
将IKAnalyzer.cfg.xml、ext_stopword.dic mydict.dic copy到 Tomcat的
webapps/solr/WEB-INF/classes
注意:ext_stopword.dic 和mydict.dic必须保存成无BOM的utf-8类型。
3,修改schema.xml配置FieldType
/usr/local/solrhome/collection1/conf 下有schema.xml
使用vi编辑 跳转到文档开头是gg 跳转到末尾是G 。在末尾添加如下代码:
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
还需要配置业务Field的业务字段 也是在schema.xml中配置,例如下列代码:
在solr中有一个id域,id是不能重复的。所以不用配置
<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"/>
复制域是item_keywords 。这是solr做的优化,这类似于查一个域和查多个域是不同的。
solr页面的维护:
添加: 添加一个json格式的文件就可以
修改: 在solr里没有update。只需要添加一个新的文档,要求文档的id和被修改的文档ID一直即可,原理是先删除后添加。
删除:使用xml格式。
删除两种方法,一种根据id删除
<delete>
<id>test001</id>
</delete>
<commit/>
一种是根据查询删除:
<delete>
<query>*:*</query>
</delete>
<commit/>记得要commit,不然没效果。