solr 安装,配置,测试

 why 

 为什么是solr或者elasticsearch,而不是lucene?lucene只是一个组件,如果要在上面开发成本太大,solr和elasticsearch都是基于lucene的成熟的应用,可以快速上手。

  solr是用来做全文检索的企业级应用。


  安装

  solr 官网下载地址, 这里笔者选用的版本是4.10.4

  环境要求,需要jdk/openjdk 1.8或者1.7u55以上

  sold整合tomcat , 这里笔者选用的tomcat版本为6.0.43

  web.xml  

<env-entry>
       <env-entry-name>solr/home</env-entry-name>
       <env-entry-value>/usr/local/solr-4.10.4/example/solr</env-entry-value>
       <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
  OK, 启动tomcat后,输入地址http://ip:port/solr/会出现solr的管理员页面

    

  我们选用默认的core,这里core相当于一个数据集合

  

  这里是一个overview的界面,左侧Analysis用来对词进行分析,Documents提供各种格式的数据导入,Query用来做查询,Files可以查看配置文件,schema brower可以查看schema.xml中字段,和字段类型的细节。

  Documents

  

  以json为例,我们导入一些Document,json api参考 

  

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;

public class RequestSender {
		
	public static void main(String[] args) throws Exception {
		add ();
	}
	
	public static void add() {
		for (int i = 10; i < 15; i++) {
			String url = "http://ip:port/solr/collection1/update?wt=json";
			String data = "{\"add\":{ \"doc\":{\"id\":\"" + i + "\",\"title\":\"会吗abcd日本\",\"name\":\"是一个非常可爱的家伙\"},\"boost\":1.0,\"overwrite\":true,\"commitWithin\":1000}}";
			doPost(url, data);
		}
		
	}
	
	public static void delete() {
		String url = "http://ip:port/solr/collection1/update?wt=json";
		String data = "{\"delete\":{\"query\":\"*:*\"}";
		doPost(url, data);
	}

}

  然后,我们在Query里面查询一下

  

  IK中文分词和同义词配置

  中文分词配置 

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>
schema.xml 

 <!--IKAnalyzer-->
   <fieldType name="text_ik" class="solr.TextField" positionIncrementGap="100">  
        <analyzer type="index">  
               <tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerSolrFactory"  isMaxWordLength="false"/>  
               <filter class="solr.LowerCaseFilterFactory"/>  
        </analyzer>  
        <analyzer type="query">  
               <tokenizer class="org.wltea.analyzer.lucene.IKAnalyzerSolrFactory"  isMaxWordLength="true"/>       
               <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>  
               <filter class="solr.LowerCaseFilterFactory"/>  
        </analyzer>  
   </fieldType>
配置了两个字段
<field name="name" type="text_ik" indexed="true" stored="true"/>
<field name="title" type="text_ik" indexed="true" stored="true" multiValued="true"/>
好了如果这样配置,重启tomcat后,页面会直接报异常,因为 IKAnalyzerSolrFactory是自定义实现的, solr并不能同时支持ik中文分词和同义词,这里使用的jar包地址

  同义词配置

  

 测试

  OK,让我们测试一下中文分词,首先我们可以用Analysis测试一下

  

  然后用Query查询一下结果

  

 这里我们勾选了debugQuery,可以看到分词细节

  

 可以看到,我们的中文分词,同义词有效果了


  参考

  solr 下载地址 http://archive.apache.org/dist/lucene/solr/

  solr 安装要求 http://lucene.apache.org/solr/5_3_1/SYSTEM_REQUIREMENTS.html

  solr整合 tomcat http://blog.csdn.net/seven_zhao/article/details/42743681

  solr json 操作   http://wiki.apache.org/solr/UpdateJSON  

  solr 中文分词配置 http://blog.csdn.net/tjcyjd/article/details/43453007

  solr ik和同义词整合 http://blog.csdn.net/tjcyjd/article/details/43699525

  solr 性能测试 http://www.tuicool.com/articles/eQ3Qz2

  solrj api  http://lucene.apache.org/solr/4_2_1/solr-solrj/org/apache/solr/client/solrj/SolrQuery.html

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值