1、简单介绍solr
Solr是一个独立的企业及搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。特点是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。
2、安装
2.1、准备工作
首先上传apache-tomcat-8.0.50.tar.gz,solr-4.10.3.tgz.tgz,IK Analyzer 2012FF_hf1(分词所需)到linux服务器。安装tomcat首先需要安装Java(没有请参考本人这篇文章------点击打开链接);解压缩tar.gz 文件 指令 ------tar -zxf solr-4.10.3.tgz.tgz
2.2、安装
Ⅰ、把solr.war复制到tomcat的webapps下并改名为solr.war
[root@xxx solr-4.10.3]# cp dist/solr-4.10.3.war /usr/local/solr/tomcat-solr/webapps/solr.war
[root@xxx solr-4.10.3]#
Ⅱ、进入tomcat的bin文件下启动tomcat
[root@xxx solr-4.10.3]# cd /usr/local/solr/tomcat-solr/bin/
[root@xxx bin]# ./startup.sh
Using CATALINA_BASE: /usr/local/solr/tomcat-solr
Using CATALINA_HOME: /usr/local/solr/tomcat-solr
Using CATALINA_TMPDIR: /usr/local/solr/tomcat-solr/temp
Using JRE_HOME: /usr/java/jdk1.8.0_161
Using CLASSPATH: /usr/local/solr/tomcat-solr/bin/bootstrap.jar:/usr/local/solr/tomcat-solr/bin/tomcat-juli.jar
Tomcat started.
[root@xxx bin]#
查看启动日式
[root@xxx bin]# cd ../
[root@xxx tomcat-solr]# tail -f logs/catalina.out
Ⅲ、关闭tomcat
[root@xxx tomcat-solr]# cd bin/
[root@xxx bin]# ./shutdown.sh
Ⅳ、删除solr.war [root@xxx webapps]# rm -rf solr.war
Ⅵ、拷贝jar包
[root@xxx ~]# cd solr-4.10.3/example/lib/ext/
[root@xxx ext]# ll
total 552
-rw-r--r-- 1 root root 16515 Feb 6 2014 jcl-over-slf4j-1.7.6.jar
-rw-r--r-- 1 root root 4959 Feb 6 2014 jul-to-slf4j-1.7.6.jar
-rw-r--r-- 1 root root 489884 May 26 2012 log4j-1.2.17.jar
-rw-r--r-- 1 root root 28688 Feb 6 2014 slf4j-api-1.7.6.jar
-rw-r--r-- 1 root root 8869 Feb 6 2014 slf4j-log4j12-1.7.6.jar
[root@xxx ext]# cp * /usr/local/solr/tomcat-solr/webapps/solr/WEB-INF/lib/
[root@xxx ext]#
Ⅶ、创建solrhome 存放solr服务器所有配置文件的目录(创建在什么位置看自己心情本人放在/usr/local/solr)
将solr解压后的文件solr.4.10.3/example/下的solr文件中的所有文件复制到solrhome里
[root@xxx solr]# cp * /usr/local/solr/solrhome -r
然后修改solr工程里的web.xml告知solr工程solrhome的位置
[root@xxx tomcat-solr]# vim webapps/solr/WEB-INF/web.xml
打开画框框的注释修改后的样子是这样
:wq退出保存。
启动tomcat(在浏览器输入ip:你的端口/solr)看到久违的solr界面,就安装成功啦。
3、分词配置
将分词所需要的jar包拷贝到solr工程
[root@xxx IK Analyzer 2012FF_hf1]# cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat-solr/webapps/solr/WEB- INF/lib/
将IKAnalyzer.cfg.xml、ext_stopword.dic、mydict.dic复制到solr工程的classes下(若没有classes请手动添加)
[root@xxx IK Analyzer 2012FF_hf1]# cp ext_stopword.dic IKAnalyzer.cfg.xml mydict.dic /usr/local/solr/tomcat-solr/webapps/solr/WEB-INF/classes -r
[root@xxx IK Analyzer 2012FF_hf1]#
注:扩展词典及使用词必须为utf-8,不能使用window 记事本编译
配置fileType
编辑/usr/local/solr/solrhome/collection1/conf的-rw-r--r-- 1 root root 60689 Apr 12 12:02 schema.xml
[root@xxx conf]# vim schema.xml
在<schema></schema>标签的末尾添加以下内容
<!--配置词典--> <fieldType name="text_ik" class="solr.TextField"> <analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/> </fieldType> <field name="item_title" type="text_ik" indexed="true" stored="true"/> <field name="item_price" type="double" indexed="true" stored="true"/> <!--根据自己业务所需要的字段来配置,我这里就不多写了--> <!--配置复制字段--> <field name="item_keywords" type="text_ik" indexed="true" stored="false" multiValued="true"/> <copyField source="item_title" dest="item_keywords"/>
4、启动tomcat
[root@xxx local]# cd solr/tomcat-solr/bin/
[root@xxx bin]# ./startup.sh
浏览器进入solr界面 选左侧collection1
5、索引库维护
测试代码
public class SolrTest { @Test public void addDocument() throws Exception { //创建一连接 SolrServer solrServer = new HttpSolrServer("http://你的ip:8085/solr"); //创建一个文档对象 SolrInputDocument document = new SolrInputDocument(); document.addField("id", "test000"); document.addField("item_title", "测试商品2"); //把文档对象写入索引库 solrServer.add(document); //提交 solrServer.commit(); } @Test public void testSolr() throws SolrServerException, IOException{ SolrServer solrServer=new HttpSolrServer("http://115.28.57.65:8085/solr"); //solrServer.deleteById("test001"); solrServer.deleteByQuery("*:*"); solrServer.commit(); }
添加完数据后就可以执行query查询啦。
solr没有修改只要再重新添加一条数据就会把原有数据覆盖掉。
删除数据
删除solr索引数据,使用XML有两种写法:
<delete><id>1</id></delete> <commit/>
<delete><query>id:1</query></delete> <commit/>
删除所有索引,这样写就可以了:
<delete><query>*:*</query></delete> <commit/>