我的solr笔记

文件里配置下面信息:

其中:

导入

 


 

查询


public List<Foo> search(String keywords, Integer page,Integer rows)throwsException {

        SolrQuery solrQuery = new SolrQuery(); //构造搜索条件

        solrQuery.setQuery("title:" + keywords); //搜索关键词

        // 设置分页 start=0就是从0开始,,rows=5当前返回5条记录,第二页就是变化start这个值为5就可以了。

        solrQuery.setStart((Math.max(page, 1) - 1) * rows);

        solrQuery.setRows(rows);

 

        //是否需要高亮

        booleanisHighlighting = !StringUtils.equals("*", keywords) &&StringUtils.isNotEmpty(keywords);

 

        if (isHighlighting) {

            // 设置高亮

            solrQuery.setHighlight(true); // 开启高亮组件

            solrQuery.addHighlightField("title");// 高亮字段

            solrQuery.setHighlightSimplePre("<em>");// 标记,高亮关键字前缀

            solrQuery.setHighlightSimplePost("</em>");// 后缀

        }

 

        // 执行查询

        QueryResponse queryResponse = this.httpSolrServer.query(solrQuery);

        List<Foo> foos = queryResponse.getBeans(Foo.class);

        if (isHighlighting) {

            // 将高亮的标题数据写回到数据对象中

            Map<String, Map<String,List<String>>> map = queryResponse.getHighlighting();

            for (Map.Entry<String, Map<String,List<String>>> highlighting : map.entrySet()){

                for (Foo foo : foos) {

                    if (!highlighting.getKey().equals(foo.getId().toString())) {

                        continue;

                    }

                    foo.setTitle(StringUtils.join(highlighting.getValue().get("title"),""));

                    break;

                }

            }

        }

 

        returnfoos;

   }

 

 

 

--------------------------------------------------------------

例子:

@Test

   publicvoid addDocument() throws Exception {

       //创建一连接

       SolrServer solrServer = new HttpSolrServer("http://192.168.81.100:8080/solr");

       //创建一个文档对象

       SolrInputDocument document = new SolrInputDocument();

       document.addField("id", "test001");

       document.addField("item_title", "测试商品2");

        document.addField("item_price", 54321);

       //把文档对象写入索引库

       solrServer.add(document);

       //提交

       solrServer.commit();

    }

   

    @Test

    publicvoid deleteDocument() throws Exception {

       //创建一连接

       SolrServer solrServer = new HttpSolrServer("http://192.168.81.100:8080/solr");

       //solrServer.deleteById("test001");

       solrServer.deleteByQuery("*:*");

       solrServer.commit();

    }

   

    @Test

    publicvoid queryDocument() throws Exception {

       SolrServer solrServer = new HttpSolrServer("http://192.168.81.100:8080/solr");

       //创建一个查询对象

       SolrQuery query = new SolrQuery();

       //设置查询条件

       query.setQuery("*:*");

       query.setStart(20);

       query.setRows(50);

       //执行查询

       QueryResponse response = solrServer.query(query);

       //取查询结果

       SolrDocumentList solrDocumentList = response.getResults();

       System.out.println("共查询到记录:" + solrDocumentList.getNumFound());

       for (SolrDocument solrDocument : solrDocumentList) {

           System.out.println(solrDocument.get("id"));

           System.out.println(solrDocument.get("item_title"));

           System.out.println(solrDocument.get("item_price"));

           System.out.println(solrDocument.get("item_image"));

          

       }

    }

 

2.假如通过实体来操作solr的插数和查询,那么那个实体必须要有field的注解


 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值