Spring Boot——使用Solr

一、加入依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>

二、在application.yml中:

spring:
  data:
    solr:
      host: http://192.168.2.155:8983/solr/ik_core

三、测试:

@RunWith(SpringRunner.class)
@SpringBootTest
public class MystoreSearchServiceApplicationTests {

    @Autowired
    private SolrClient client;

    @Test
    public void testQueryDataByHighLighting() {
        SolrQuery query = new SolrQuery();
        //设置查询内容
        query.setQuery("双卡");
        //设置分页
        query.setStart(0);
        query.setRows(10);
        //设置复制域
        query.set("df", "t_product_keywords");

        //开启高亮
        query.setHighlight(true);
        //添加高亮字段
        query.addHighlightField("t_product_name");
        //设置高亮的前缀和后缀
        query.setHighlightSimplePre("<span style='color:red;'>");
        query.setHighlightSimplePost("</span>");

        try {
            QueryResponse response = client.query(query);
            // 结果集
            SolrDocumentList results = response.getResults();
            // 高亮部分
            Map<String, Map<String, List<String>>> highlighting = response.getHighlighting();
            for (SolrDocument result : results) {
                Object id = result.getFieldValue("id");
                // 根据id拿当前字段的高亮部分;
                Map<String, List<String>> stringListMap = highlighting.get(id);
                if (stringListMap != null) {
                    List<String> t_product_name = stringListMap.get("t_product_name");
                    String s = t_product_name.get(0);
                    System.out.println(s);
                }
            }
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testQueryData() {
        SolrQuery query = new SolrQuery();
        //设置查询内容
        query.setQuery("双卡");
        //设置分页
        query.setStart(0);
        query.setRows(10);
        //设置复制域
        query.set("df", "t_product_keywords");

        try {
            QueryResponse response = client.query(query);
            SolrDocumentList results = response.getResults();
            for (SolrDocument result : results) {
                System.out.println(result);
            }
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testDeleteData() {
        String query = "id:003";
        try {
            client.deleteByQuery(query);
            client.commit();
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    @Test
    public void testAddData() {
        SolrInputDocument document = new SolrInputDocument();

        document.addField("id", "003");
        document.addField("t_product_name", "huawei p30 牛逼 荣耀之最 双卡双待");
        document.addField("t_product_age", "1212");

        try {
            client.add(document);
            client.commit();
        } catch (SolrServerException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/Tractors/p/11323982.html
今日推荐