solrj的简单使用

1.简单介绍

Solr是一个全文检索的服务,对外提供webservice服务,webservice使用的http协议。

Solr作为一个服务端,同时也提供很多的不同编程语言的客户端,供程序员开发使用。

2.添加依赖


  4.0.0
  com.mine
  solr
  war
  1.0-SNAPSHOT
  solr Maven Webapp
  http://maven.apache.org
  
    
      
        org.apache.maven.plugins
        maven-compiler-plugin
        3.3
        
          
          1.7
          1.7
        
      

      
        org.apache.tomcat.maven
        tomcat7-maven-plugin
        2.1
        
          utf-8
          UTF-8
          8888
        
      
    
  
  
    
      org.springframework
      spring-beans
      4.3.3.RELEASE
    
    
      org.springframework
      spring-context
      4.3.3.RELEASE
    
    
      org.springframework
      spring-context-support
      4.3.3.RELEASE
    
    
      org.springframework
      spring-jdbc
      4.3.3.RELEASE
    
    
      org.springframework
      spring-orm
      4.3.3.RELEASE
    
    
      org.springframework
      spring-test
      4.3.3.RELEASE
    
    
      org.springframework
      spring-aspects
      4.3.3.RELEASE
    
    
      org.springframework
      spring-expression
      4.3.3.RELEASE
    
    
      org.springframework
      spring-webmvc
      4.3.3.RELEASE
    


    
      javax.servlet
      jstl
      1.2
    

    
      javax.servlet.jsp
      jsp-api
      2.1
      provided
    

    
      javax.servlet
      servlet-api
      2.5
      provided
    
    
      org.apache.solr
      solr-solrj
      4.10.4
    
    
      org.slf4j
      jcl-over-slf4j
      1.7.21
    
    
      org.slf4j
      jul-to-slf4j
      1.7.21
    
    
      org.slf4j
      slf4j-api
      1.7.21
    
    
      org.slf4j
      slf4j-log4j12
      1.7.21
    
    
      junit
      junit
      4.9
    
    
      log4j
      log4j
      1.2.14
    
    
      commons-lang
      commons-lang
      2.6
    
  

3.简单测试

/**
 * Copyright (C), 2015-2017, XXX有限公司
 * Description: 索引维护
 * History:
 *           
4.  数据导入处理器

作为程序员,我们不可能像上面那样一条一条更改添加,很麻烦,数据导入处理器替我们提供了解决方案

solr提供dataimport-Handler数据导入处理器,工作流程:

(1) solr通过dataimport-Handler查询关系数据库中的数据

(2) 对查询到的数据创建索引

上边的过程是自动化完成的。

可以通过此dataimport-Handler,批量将关系数据库中的数据创建索引到solr索引库中。

<1>加载jar包

将solr\dist\ solr-dataimporthandler-4.10.3.jar拷贝至solr\contrib\dataimporthandler

配置solrconfig.xml加载jar包:

 
<2>加载MySQL数据库驱动包

将mysql数据库驱动的jar拷贝至solr\contrib\databaseDriver下

配置solrconfig.xml加载jar包:

<3>编辑data-config.xml文件,存放在SolrCore的conf目录
  
   
   
   
	
		  
		  
		  
		  
		  
		  
	   
   


(column数据库列名,name为solr中定义的field的域名)
<4>配置完成了,当然是加载这个配置文件,怎么加载呢?修改solrconfig.xml,添加requestHandler


     
       data-config.xml
     
<5>导入数据

solrj的简单使用_第1张图片


完成,可以进行搜索,当然,我们也可以在schema.xml文件中进行一下配置,达到组合搜索的结果

 
   
   

<6>搜索

solrj的简单使用_第2张图片


可以根据这张图片编写代码

 //搜索索引
    @Test
    public void searchIndex() throws SolrServerException {
        //创建solr服务对象,通过此服务向solr服务发起请求
        SolrServer solrServer = new HttpSolrServer(solrUrl);

        //创建查询对象
        SolrQuery solrQuery = new SolrQuery();
        //查询关键字("q"不能省去,必须写)
        solrQuery.set("q","product_keywords:挂钩");
        //添加过滤,过滤一个不满足,想过滤多个可以使用add
        solrQuery.set("fq","product_price:[1 TO 3]");
        //排序
        solrQuery.addSort("product_price", SolrQuery.ORDER.desc);
        //如果一个排序不够,可以再加一个
       //solrQuery.addSort("", SolrQuery.ORDER.asc);

        //分页(知道当前页码和每页显示个数求出开始下标)
        int curPage=1;
        int rows=15;
        //计算开始记录下标
        int start=rows*(curPage-1);
        //向query中设置分页参数
        solrQuery.setStart(start);
        solrQuery.setRows(rows);

        //指定显示的field
        //solrQuery.addField("product_name");
        //指定默认搜索的域
        solrQuery.set("df","product_keywords");
        //想设置高亮的话,可以设置高亮
        solrQuery.setHighlight(true);
        //设置高亮参数(想设置多个的话,不多说)
        solrQuery.addHighlightField("product_name");
        //设置高亮前缀和后缀
        solrQuery.setHighlightSimplePre("");
        solrQuery.setHighlightSimplePost("");

        //指定查询
        QueryResponse response = solrServer.query(solrQuery);
        //从响应中得到高亮map
        Map>> highlighting = response.getHighlighting();
        //从响应中得到结果
        SolrDocumentList docs = response.getResults();
        //查看结果
        for (SolrDocument doc : docs) {
            System.out.print(doc.get("id")+"\t");
            System.out.println(doc.get("product_name"));
            //获取高亮信息
            if (highlighting != null) {
                Map> map = highlighting.get(doc.get("id"));
                if (list != null) {
                    List list = map.get("product_name");
                    if (map != null) {
                        System.out.println(list.get(0));
                    }
                }
            }
        }
    }









你可能感兴趣的:(solrj的简单使用)