Solr基于Lucene实现搜索引擎

Solr概述

    Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过HTTP Get操作提出查找请求,并得到XML格式的返回结果。

    Solr是一个高性能的,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。

Solr环境搭建

安装Tomcat

//解压缩Tomcat

tar –zxvf apache-tomcat-8.5.27.tar.gz

//进入Tomcat目录

cd apache-tomcat-8.5.27

//启动Tomcat

 ./bin/startup.sh

//关闭防火墙

servcie iptables stop

chkconfig iptables off

安装Solr

//解压缩Solr

 tar -zxvf solr-7.3.0.tgz

复制 solr\server\solr-webapp\webapp 到 Tomcat\webapps\

文件夹改名为 solr 

复制 solr\server\lib\ext 中的 jar  到  Tomcat\webapps\solr\WEB-INF\lib 目录中

复制 solr\server\lib 中的 jar  到  Tomcat\webapps\solr\WEB-INF\lib 目录中

复制 solr\dist 中的 jar  到  Tomcat\webapps\solr\WEB-INF\lib 目录中

复制 solr\server\resources\log4j.properties 到 Tomcat\webapps\solr\WEB-INF\classes 目录

配置Solr实例

在 Tomcat 目录下建立 solrhome 目录(存放Solr实例)       在solrhome目录下创建 bwf 目录 (具体的一个Solr实例)

复制 solr\example\example-DIH\solr\solr\ 所有文件 到 Tomcat/solrhome/bwf 目录

复制 solr/server/solr/  所有文件 到 Tomcat/solrhome 目录

编辑 Apache/webapps/solr/WEB-INF/web.xml

     

              solr/home      

              /usr/local/apache-tomcat-8.5.27/solrhome    

              java.lang.String    

注释掉

测试运行Solr服务器

启动Tomcat服务器

通过浏览器访问:http://172.31.78.87:8080/solr/index.html

配置Solr中文分词器

复制 solr/contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-6.5.0.jar 到 Tomcat/webapps/solr/WEB-INF/lib/

编辑 bwf/conf/managed-schema:

         

                 

         

         

                 

         

配置IK中文分词器

复制 IKAnalyzer.cfg.xml , ext.dic和stopword.dic 到 Tomcat/webapps/solr/WEB-INF/classes 目录下

ext.dic 里扩展中文分词如:博为峰

复制 IKAnalyzer2017_6_6_0.jar 到 Tomcat/webapps/solr/WEB-INF/lib/目录

编辑 bwf/conf/managed-schema:

     

           

     

     

             

     

配置拼音分词器

复制 pinyin4j-2.5.0.jar、pinyinAnalyzer.jar 到 Tomcat/webapps/solr/WEB-INF/lib/目录

编辑 bwf/conf/managed-schema:

     

     

     

     

     

     

     

     

     

       

 数据导入

managed-schema.xml配置索引字段:

 

 

 

 

 

 

 

 

 

 

 

   

 

 

 

solr-data-config.xml配置数据源:

   

           

       

                     

                     

                     

                     

                     

                     

                     

                     

                     

                     

                     

                   

         

复制 mysql-connector-java-5.1.30.jar 到 Tomcat/webapps/solr/WEB-INF/lib/目录

重启 Tomcat

通过浏览器访问:http://172.31.78.87:8080/solr/index.html

SSM整合Solr

添加POM依赖

   

        org.apache.solr    

        solr-solrj    

        7.3.0

实体对象索引映射

public class Product implements Serializable {

         @Field("id")  

          private String prodId;    

         @Field  

         private String prodSn;  

          ……

}

SolrClient使用

// 定义Solr服务器及实例访问地址

String baseUrl = "http://172.31.79.19:8080/solr/bwf";

// 创建SolrClient操作对象

HttpSolrClient solrClient= new HttpSolrClient.Builder(baseUrl)        

                                           .withConnectionTimeout(10000)        

                                           .withSocketTimeout(60000)        

                                           .build();

SolrClient添加/修改索引

// 准备要添加的实体对象

Product prod = new Product(); prod.setProdId("100001");

prod.setProdName("测试商品1");

// 创建索引 solrClient.addBean(prod);

// 提交事务 solrClient.commit();

SolrClient删除索引

// 根据Id删除索引

solrClient.deleteById("100001");

// 提交事务

solrClient.commit();

SolrClient搜索索引

// 准备搜索语句

SolrQuery query = new SolrQuery("prod_keywords:boweifeng");

// 为搜索添加索引字段

query.addField("id");

query.addField("prodName");

query.addField("prodContent");

query.setRows(100);

// 发送查询

QueryResponse response =  solrClient.query(query);

solrClient.commit();

// 查询结果转换实体对象

List list = response.getBeans( Product.class );

// 显示搜索结果

for( Product p : list ) {    

System.out.println(p.getProdId()+"\t"+p.getProdName()+"\t"+p.getProdContent());

}

SSM整合Solr

添加spring-solr.xml配置文件:

             

         

         

   

你可能感兴趣的:(Solr基于Lucene实现搜索引擎)