solr 安装,配置,测试

来源:互联网 发布:网络贷款信息会泄露吗 编辑:程序博客网 时间:2024/05/26 08:42

 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