首先,如果是从http://lucene.apache.org/solr/下载的solr,基本都是自带集成的jetty服务,不需要单独搭建tomcat环境,但是要注意jdk版本,直接解压通过cmd命令调用bin目录下的solr.cmd -start 来启动
就可以直接通过浏览器访问,默认端口是8983,地址:http://localhost:8983/solr
如果需要集成中文分词器
直接在实例目录下新建lib文件夹,将中文分词器jar复制进去,再修改scahm.xml文件的filetype节点类型就可以。
如:我新建的solr实例名叫new_core,那么就在solr-6.0.0serversolr ew_core的路径下新建lib文件夹,并把中文分词器的jar复制进去
备注:分词器自己根据业务需要选择,常见的ik,hanlp,jcseg等
然后修改managed-schema配置文件的filetype,当然也可以新增(其实可以理解为新增了一种solr字段类型,至于要在那个字段引用,在filed字段节点上配置type为当前类型即可)
<fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer" useSmart="false"/> <analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer" useSmart="false"/> </fieldType> <fieldType name="text_hp" class="solr.TextField"> <analyzer type="index"> <tokenizer class="com.hankcs.lucene.HanLPTokenizerFactory" enableIndexMode="true"/> </analyzer> <analyzer type="query"> <tokenizer class="com.hankcs.lucene.HanLPTokenizerFactory" enableIndexMode="false"/> </analyzer> </fieldType>
注:class就是分词器jar解压的src下的路径。
更改完成后,可以重启solr服务,然后进入主页访问查看分词效果,当然前提是你要有自己的solr实例(即solr库)
加词典
在F:solr-6.0.0serversolr-webappwebappWEB-INF下新建classes文件夹,然后新建IKAnalyzer.cfg.xml配置文件,内容为:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> <properties> <comment>IK Analyzer 扩展配置</comment> <!--用户可以在这里配置自己的扩展字典 --> <entry key="ext_dict">ext.dic;</entry> <!--用户可以在这里配置自己的扩展停止词字典--> <entry key="ext_stopwords">stopword.dic;</entry> </properties>
然后同级目录新增这两个dic文件,内容每行一个词,自己根据业务添加,也可以自己网上下载词库更新
第二种方式是tomcat下自定义部署solr,需要将solr包中的webapps部分复制到tomcat环境中,进行配置,详情可以自己网上找一下,不赘述,分词器配置也是一样的。
另外提一下solr删除全部索引数据的方法,在documents中,type选择xml,写上如下内容,点击提交,即可ok:
<delete><query>*:*</query></delete> <commit/>
至于查询方法,新增方法,查询排序,加权重,加匹配度等,自己查,懒得写了。
然后值得一记的是cdh环境上的集成分词和部署,此处给自己留个提醒,其他人仅供参考
我这边的大数据环境是4台服务器的集群环境,用ZooKeeper来配置管理,solr便是在上面的,因为是配置管理所以都是模板复制一样的命令操作,虽然我一脸low逼的用FileZilla Client工具将jar包和配置的xml文件按上述本地配置的方式复制到4台服务器上,并且将分词jar包和词典配置都放在tomcat的环境下,
服务器但是重启solr服务后,无效,多次尝试后发现每次重启solr服务会把tomcat下的jar还原掉,问了下同事,才知道需要在服务器上执行一句命令来更新:solrctl instancedir --update suggest /var/lib/solr/suggest
注意:suggest 是我的服务器的实例名(solr库名称)
然后赶紧用xshell工具连上服务器(任意一台都可以),执行命令,但是发现执行完的反馈信息只是刷新了var/lib/solr/suggest /conf下的内容,我的jar包并没用刷新,重启后还是会覆盖放在tomcat/webapps下的solr应用下的web-inf下的lib的jar包,然后继续找问题。
最终在网上找到一片文章:https://blog.csdn.net/weixin_33716941/article/details/92202491
原来这个也是可以直接复制修改的,然后把jar复制到
/opt/cloudera/parcels/CDH-5.4.4-1.cdh5.4.4.pp0.4/lib/solr/webapps/solr/WEB-INF/lib下,再次重启solr服务OK了。
在高版本的CDH中,位置为:/usr/lib/solr/webapps/solr/WEB-INF/lib
另外需要注意的是:
solr版本和分词器的版本要对应,不能出现分词的jar版本高solr低的情况,否则配置完成后重启solr就会发现有错误