你不知道的全文检索---solrJ操作solr索引库(二)


你不知道的全文检索---solrJ操作solr索引库

 


         上一篇简单的介绍了一下如何通过控制台来维护solr索引库,本文将介绍一下如何通过java代码的方式维护solr的索引库,这个时候我们需要引入solrJ的jar包。

 

         solrJ维护solr索引库


         新建工程


         首先新建一个Maven工程(普通的java工程也一样,只要引入下面的jar包就行),pom中需要引入的包如下:

<dependencies>
        <dependency>
            <groupId>org.apache.solr</groupId>
            <artifactId>solr-solrj</artifactId>
            <version>4.10.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.7</version>
        </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.1.3</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.3.2</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.4.2</version>
        </dependency>
    </dependencies>


         编写测试类


         项目新建完成之后,新建一个test类使用solrJ去操作solr索引库如下:

public classsolrTest {
 
    private SolrServer solrServer;
    //private SolrInputDocument document;
    @Before
    public void setUp() throws Exception {
        //创建一连接
    solrServer = new HttpSolrServer("http://192.168.21.224:8080/solr/collection1");
    SolrInputDocument document = new SolrInputDocument();
    }
   
    @Test
   publicvoidtestAdd() throwsException {
//       //创建一连接
//       SolrServersolrServer = newHttpSolrServer("http://192.168.21.224:8080/solr/collection1");
//       //穿件文档对象
    SolrInputDocument document = new SolrInputDocument();
    document.addField("id", System.currentTimeMillis());
    document.addField("nickName", "张三");
    document.addField("companyName", "中呵");
    //把文档对象写入索引库
    solrServer.add(document);
    //提交
    solrServer.commit();
   }
   
    @Test
   publicvoidupdateAdd() throwsException {
        SolrInputDocumentdocument= newSolrInputDocument();
        document.setField("id", "1465204065056");
        document.setField("nickName", "王五");
    document.setField("companyName", "中呵");
     //把文档对象写入索引库
    solrServer.add(document);
    //提交
    solrServer.commit();
   }
 
   @Test
   publicvoidtestDelete() throwsException {
        solrServer.deleteById("1465203434427");
        //solrServer.deleteByQuery("*:*");
        solrServer.commit();
   }
 
   @Test
    public void testSearch() throws Exception {
        SolrQuerysolrQuery= newSolrQuery(); // 构造搜索条件
        solrQuery.setQuery("companyName:"+ "中呵"); // 搜索关键词
        // 设置分页 start=0就是从0开始,,rows=5当前返回5条记录,第二页就是变化start这个值为5就可以了。
        solrQuery.setStart((Math.max(1,1) - 1) * 3);
        solrQuery.setRows(3);
 
        // 是否需要高亮
        boolean isHighlighting = !StringUtils.equals("*", "中呵")
                &&StringUtils.isNotEmpty("中呵");
 
        if (isHighlighting) {
            // 设置高亮
            solrQuery.setHighlight(true); // 开启高亮组件
            solrQuery.addHighlightField("companyName");// 高亮字段
            solrQuery.setHighlightSimplePre("<em>");// 标记,高亮关键字前缀
            solrQuery.setHighlightSimplePost("</em>");// 后缀
        }
 
        // 执行查询
        QueryResponsequeryResponse = this.solrServer.query(solrQuery);
 
    System.out.println("共查询出数据条数:" + queryResponse.getResults().size());
    }
}


         本文简单的介绍了一下如何使用solrJ去操作solr的索引库,使用测试方法,我们测试了增、删、改、查等最基本的操作。

你可能感兴趣的:(你不知道的全文检索---solrJ操作solr索引库(二))