首先,很荣幸自己能有机会研究对我来说新的技术Java的开源搜索引擎solr,并应用于当前的项目!本文以下观点或建议,希望能给大家带来方便!我以前从未听说过solr,截至今天已经研究了一周的时间了,算是有所收获吧!基本的功能:IK分词器,智能提示,关键词搜索都能成功了!
本文先开始IK分词器的介绍:
solr下载地址: http://archive.apache.org/dist/lucene/solr/ 本人用的5.5.2的版本的
solr搜索引擎本身有很多分词器,但是中文的没有,需要自己配置IK分词器(这是中国人自己开发的),网上现在最多的是2012版本的IK jar,这个不适用solr5.x以上的版本,还好本人从网上下载了大神支持solr5.x以上的IK分词器的源码,本人自己通过maven打成jar包,ik-analyzer-solr5-5.x.jar。
把下载下来的solr.war或者是server/solr-webapp/webapp到tomcat下的webapps目录下
拷贝到tomcat下,然后在WEB-INF手动创建classes文件夹,把server/lib/ext/目录下的所有jar包复制到tomcat/webapps/solr/WEB-INF/lib/下,再把server/resouce下的log4j.properties文件复制到tomcat/weapps/solr/WEB-INF/classes目录下,再把IK的一个配置文件也放到classes下
IK的jar包扔到WEB-INF/lib 下,
再把web.xml里面的这个放开,默认是注释掉的,中间的路径根据自己的情况设定,这是solr的中心库。
随便进入一个中心库找到conf文件夹下,solr5.x以上使用的是managed-schema文件,但是这里我还是使用schema.xml,复制一份managed-schema,然后改名schema.xml,然后找到solrconfig.xml,进去
<pre name="code" class="java"><!--<schemaFactory class="ManagedIndexSchemaFactory">
<bool name="mutable">true</bool>
<str name="managedSchemaResourceName">managed-schema</str>
</schemaFactory>-->
把这个注释掉,然后增加下面一句
<pre name="code" class="java"> <schemaFactory class="ClassicIndexSchemaFactory"/>
,然后在schema.xml里面设置IK分词器,如下
<pre name="code" class="java"><!-- 自定义的数据类型 支持IKAnalyzer-->
<fieldType name="text_ik" class="solr.TextField">
<analyzer type="index">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" />
</analyzer>
<analyzer type="query">
<tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" />
</analyzer>
</fieldType>
然后在你的field的 有个type=text_ik 这样 这个字段就被设置成IK分词器解析了
例如: <field name="Artist_Name" type="text_ik" indexed="true" stored="true"/>。
可以本地启动tomcat,并在操作页面
至此,出现如上的界面说明你的IK 分词器,集成solr 成功了!谢谢,后续更新,搜索,高亮和智能提示,谢谢关注!