我的solr笔记文件里配置下面信息:

我的solr笔记

其中:

我的solr笔记

导入

 我的solr笔记

我的solr笔记

 

查询

我的solr笔记

我的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的注解

我的solr笔记

我的solr笔记

 

相关文章:

  • 2021-11-16
  • 2022-12-23
  • 2022-01-03
  • 2021-10-14
  • 2021-12-21
  • 2022-01-20
  • 2021-12-04
猜你喜欢
  • 2021-11-15
  • 2022-12-23
  • 2021-11-29
  • 2021-10-25
  • 2022-01-11
  • 2022-02-18
  • 2022-12-23
相关资源
相似解决方案