前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >腾讯云-Solr企业级搜索引擎实战

腾讯云-Solr企业级搜索引擎实战

作者头像
用户5224393
发布2019-08-13 15:17:40
1.3K0
发布2019-08-13 15:17:40
举报
文章被收录于专栏:Java研发军团

引言

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java研发军团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Solr安装
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档