引言
Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。
Solr安装
1. 上传solr-4.10.3.tgz.tgz到root文件夹下,上传工具请阅读上一文章。
2. 创建一个solr文件夹
先进入到/usr/local文件夹下:cd /usr/local/
然后在创建solr文件夹: mkdir solr
将solr-4.10.3.tgz.tgz拷贝到solr文件夹下:cp /root/solr-4.10.3.tgz.tgz solr/
3. 进入到solr文件夹下解压solr-4.10.3.tgz.tgz solr/
命令:cd solr
命令:tar zxf solr-4.10.3.tgz.tgz
4.安装tomcat(由于前面章节已经讲过tomcat安装了此处就忽略)
5.安装好tomcat之后,再将solr-4.10.3/dist/solr-4.10.3.war文件拷贝到tomcat/webapps并且修改名为solr.war
命令:cp -r /usr/local/solr/solr-4.10.3/dist/solr-4.10.3.war /usr/local/solr/tomcat/webapps/solr.war
6. 然后解压solr.war文件,直接启动tomcat就可以解压了。
7. 然后删除solr.war包删除前必须停止tomcat
停止tomcat命令:/usr/local/solr/tomcat/bin/shutdown.sh
或者进入cd /usr/local/solr/tomcat/bin/ 然后在输入命令./shutdown.sh
删除solr.war包
命令:cd /usr/local/solr/tomcat/webapps
删除命令:rm solr.war
8. 进入/usr/local/solr/solr-4.10.3目录下将example/lib/ext/*下的jar拷贝到/usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/下
进入命令: cd /usr/local/solr/solr-4.10.3
要拷贝的jar目录
拷贝命令:
cp example/lib/ext/* /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
9. 进入/usr/local/solr/solr-4.10.3
命令:cd /usr/local/solr/solr-4.10.3
然后将example/solr文件夹下的文件拷贝到/usr/local/solr/solrhome如果文件夹不存在将创建
命令cp -r example/solr /usr/local/solr/solrhome
10. 进入到/usr/local/solr/tomcat/webapps/solr/WEB-INF/下修改web.xml文件
命令:cd /usr/local/solr/tomcat/webapps/solr/WEB-INF/
编辑命令:vi web.xml
放开<env-entry>注释,并且修改修改路径为:/usr/local/solr/solrhome/
:wq保存
11. 然后启动tomcat
进入 cd /usr/local/solr/tomcat/bin
开启tomcat命令:./startup.sh
关闭命令:./shutdown.sh
进入日志文件夹命令:cd /usr/local/solr/tomcat/logs
查看日志:tail catalina.out
如果没有开放tomcat的8080端口的需要开放一下8080端口,具体的可以查看“学习笔记”中的jdk tomcat实战
12.异常处理
如果访问报以下异常
HTTP Status 500 - {msg=SolrCore 'collection1' is not available due to init failure: Index locked for write for core collection1,trace=org.apache.solr.common.SolrException: SolrCore 'collection1' is not available due to init failure: Index locked for write for core collection1
at org.apache.solr.core.CoreContainer.getCore(CoreContainer.java:745)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:307) at rg.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) .... 解决办法 1.释放tomcat下的/webapps/solr/WEB-INF/web.xml中的<env-entry>标签,并修改标签下的<env-entry-value>标签内容为solrhome的路径。如果不管用就看第二条。 2.修改solrhome下/collection1/conf/solrconfig.xml,释放标签:<unlockOnStartup> 并将值false改为true.如果还不管用请看第三条。 3.solrhome目录建立文件solr.xml,内容: <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <solr> </solr>
13.添加中文分词器
1.将中文分词器先上传到root文件夹下IK Analyzer 2012FF_hf1
2. 查看文件中的文件,cdIK Analyzer 2012FF_hf1
3. 然后将IKAnalyzer2012FF_u1.jar拷贝到solr的lib文件夹下
命令:cp IKAnalyzer2012FF_u1.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
查看命令: cd /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/
4. 然后将ext_stopword.dic,IKAnalyzer.cfg.xml,mydict.dic三个文件拷贝到/usr/local/solr/tomcat/webapps/solr/WEB-INF/classes/下
1)首先需要创建一个classes文件夹
命令: mkdir /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes/
将上面3个文件拷贝进去
命令:cp ext_stopword.dic IKAnalyzer.cfg.xml mydict.dic /usr/local/solr/tomcat/webapps/solr/WEB-INF/classes/
这样中文分词器就定义好了
5.配置业务域
进入solrhome文件夹
命令:cd /usr/local/solr/solrhome/collection1/conf
命令:vi schema.xml
然后大写的G到最底部加上以下内容
代码语言:javascript复制<!-- IKAnalyzer,中文分词器名为:text_ik-->
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
下面需要中文分词就需要将type的值等于text_ik,如果不需要分词的就可以使用其它类型,比如string,long等等
代码语言:javascript复制<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_name" type="string" indexed="true" stored="true" />
这里是复制域分词器,item_keywords包含了以下所有的域,搜索的时候只需要匹配以上任意的都可以搜索出来
代码语言:javascript复制<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_name" dest="item_keywords"/>
下面就需要关闭tomcat然后在启动tomcat
然后查看是否配置好了text_ik的中文分词器
以上就配置好了solr的中文分词器
好了腾讯云的solr单机版安装以及中文分词器就写完了。
END