solr6.6搜索环境搭建、IK中文分词、同义词、拼音、solrj的使用

 
 
2017-06-20 Apache官网发布了solr6.6版本下载地址
下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/lucene/solr/6.6.0/
solr6.6搜索环境搭建、IK中文分词同义词拼音solrj的使用

部署环境:Tomcat8

solr版本:6.6

jdk:1.8

solr配置:

解压solr,将目录\solr-6.6.0\server\solr-webapp下了webapp文件夹拷贝至
Tomcat的webapp目录下.改名为solr
将olr-6.6.0/server/lib/ext中所有 jar包拷贝至\weba pp s\solr\WEB-INF\lib下, 将\solr-6.6.0\dist\solrj-lib下的 noggit-0.6.jar 拷贝至\weba pp s\solr\WEB-INF\lib下, 将olr-6.6.0/server/lib/中所有 metrics-开头jar包拷贝至\webapps\solr\WEB-INF \lib下, WEB-INF下件新建classes文件夹,然后将\solr-6.6.0\server\resources中 log4j.properties拷贝至classes下.  

 
将\solr-6.6.0\server目录下solr文件拷贝至任意位置.(我这里是G:\solrhome)改名
为solrhome.作为索引存放位置
在solrhome目录下,新建collection1文件夹,并将 /solr-6.6.0/server/solr/configsets/basic_configs
中conf文件夹复制到新建的collection1文件夹中.在collection1目录下新建data文件夹.
collection1中创建文件core.properties,写入内容
name=collection1
config=solrconfig.xml
schema=schema.xml
dataDir=data

 

 

回到Tomcat目录下,打开\webapps\solr\WEB-INF\web.xml文件.打开被注释的<env-entry>,
修改路径为solrhome的路径
    <env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>G:\solrhome</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
 将底部<security-constraint>注释掉;


 

  接下来就是配置 IK中文分析器: solr本身带有中文分词器,不过其不支持自己添加词汇,选用IK分词器,不过IK在2012年已经停止更新了, 但是这里 附件提供了最新的IK支持. ikanalyzer-solr6.6.zipik-analyzer-solr5-5.x.jarsolr-analyzer-ik-5.1.0.jar复制到\solr\WEB-INF\lib下,将 IKAnalyzer.cfg.xml、ext.dic、stopword.dic

 
三个文件复制到\solr\WEB-INF\classes下ext.dic文件里为自定义的扩展词汇, stopword为自定义的停用词 接下来开始定义 fieldType和field将下面代码复制到solrhome的olrhome\collection1\conf\目录下 managed-schema文件里.这里配置包含了后面的近义词,(近义词后面说)     利用 solr提供的客户端开始关联数据库.实现批量数据的导入.
<requestHandler name="/dataimport" 
class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
      <str name="config">data-config.xml</str>
     </lst>
  </requestHandler> 
 在同级目录下创建data-config.xml文件,我这里用的mysql,field为配置field的映射, column为数据库字段名.name为前面自定义field的name 注意:根据实际情况配置
<?xml version="1.0" encoding="UTF-8" ?>  
<dataConfig>   
<dataSource type="JdbcDataSource"   
		  driver="com.mysql.jdbc.Driver"   
		  url="jdbc:mysql://localhost:3306/solrDemo"   
		  user="root"   
		  password="root"/>   
<document>   
	<entity name="product" query="SELECT pid,name,catalog_name,price,description,picture FROM products ">
		 <field column="pid" name="id"/> 
		 <field column="name" name="product_name"/> 
		 <field column="catalog_name" name="product_catalog_name"/> 
		 <field column="price" name="product_price"/> 
		 <field column="description" name="product_description"/> 
		 <field column="picture" name="product_picture"/> 
	</entity>   
</document>   
</dataConfig>
 将solr-6.6.0\dist目录下的solr-dataimporthandler-6.6.0.jarsolr-dataimporthandler-extras-6.6.0.jar复制到solr/ WEB-INF/lib下, 在solrhome\collection1\conf\ solrconfig.mxl配置<lib dir=''solr的lib路径> 原先为相对路径在solr6.6文件里寻找,这样方便管理,并且不会因为路径更换拾取包的依赖.


 
 然后打开客户端,点击Execute,如下:
注意:如果不勾选 Auto-Refresh Status 不会提示是否全部建立索引成功,点击右边Refresh 刷新
entity是data-config.xml里面的entity

 
 
接下来就可以点击 Query 进行查询了.这里不做演示. 注意:因为中文分词缘故,已经被分为词语储存,进行单个字查询的时候会出现查不到的结果. 解决方案一(不推荐):将所有单个字作为扩展词,缺点:分的过于细,会影响搜索结果.出现不愿出现的结果 解决方案二:使用通配符 *. 近义词配置:前面配置IK已经配置了近义词了,前面配置的是在查询时 会使用近义词查询,并没有配置建立索引时建立近义词索引.那么现在就开始 添加近义词了.在managed-schema同级目录下的synonyms.txt里,  如图,搜索房产,地产,不动产任意一个,则三个结果都会出现.

  拼音配置:   solrj的使用: 将\solr-6.6.0\dist目录下的solr-solrj-6.6.0.jarsolr-core-6.6.0.jarsolrj-lib文件夹下的jar包 拷贝到项目中. 对于solrj的使用这里就不做过多的介绍了, 网上内容很多,这里就做个查询的示例. HttpSolrClient httpSolrClient = new HttpSolrClient(URL);发现这个方法已经过时,现在使用

猜你喜欢

转载自dscq.iteye.com/blog/2383399