主要讲一下solr面板的使用:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

查询

q:     查询用  语法: name:刘中华      支持通配符    

  ? 表示单个任意字符的通配

  * 表示多个任意字符的通配(不能在检索的项开始使用*或者?符号)

  ~ 表示模糊检索,如检索拼写类似于”roam”的项这样写:roam将找到形如foam和roams的单词;roam0.8,检索返回相似度在0.8以上的记录。

  AND、|| 布尔操作符

  OR、&& 布尔操作符

  NOT、!、-(排除操作符不能单独与项使用构成查询)

  + 存在操作符,要求符号”+”后的项必须在文档相应的域中存在²

  ( ) 用于构成子查询

  [] 包含范围检索,如检索某时间段记录,包含头尾,date:[201507 TO 201510]

  {} 不包含范围检索,如检索某时间段记录,不包含头尾date:{201507 TO 201510}

fq : filter query 过滤查询  比如:查询日期范围  last_modified:[2019-04-19  TO 2019-04-27]

sort: 排序。格式如下:字段名 排序方式;如   id desc 表示按id字段降序排列查询结果。 中间没有分号  是空格

fl: field list。指定查询结果返回哪些字段。多个时以空格“ ”或逗号“,”分隔。不指定时,默认全返回。

高亮

https://www.jianshu.com/p/cbb938c62e0e

hl: high light 高亮。hl=true表示启用高亮 

hl.fl 设定高亮显示的字段,用空格或逗号隔开的字段列表。要启用某个字段的highlight功能,就得保证该字段在schema中是stored。如果该参数未被给出,那么就会高亮默认字段 standard handler会用df参数,dismax字段用qf参数。你可以使用星号去方便的高亮所有字段。如果你使用了通配符,那么要考虑启用hl.requiredFieldMatch选项。 hl.requireFieldMatch 如果置为true,除非用hl.fl指定了该字段,查询结果才会被高亮。它的默认值是false。 hl.usePhraseHighlighter 如果一个查询中含有短语(引号框起来的)那么会保证一定要完全匹配短语的才会被高亮。 hl.highlightMultiTerm 如果使用通配符和模糊搜索,那么会确保与通配符匹配的term会高亮。默认为false,同时hl.usePhraseHighlighter要为true。 hl.fragsize 返回的最大字符数。默认是100.如果为0,那么该字段不会被fragmented且整个字段的值会被返回。

 solr的搜索 随笔

java API

推荐博客:   https://blog.csdn.net/qq_37334135/article/details/76862508

其实就是solrJ的搜索。最底层的都是他,无论是   spring-boot-starter-data-solr   还是   spring-data-solr  都是这个solrJ的封装。

 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-solr</artifactId>
</dependency>
spring:
  datasource:
    data:
      solr:
        host: http://127.0.0.1:8983/solr/

 

根据id搜索

   @Autowired
    private SolrClient client;

    //根据id查找
    @RequestMapping("/")
    public Object testSolr() throws IOException, SolrServerException {
        SolrDocument document = client.getById("test", "2");
        System.out.println(document);
        return document;
    }

带条件查询

@RequestMapping("/list")
    public Object query() throws Exception {
        SolrQuery query = new SolrQuery();
        query.set("q", "id:3");
        QueryResponse response = solrClient.query("test", query);
        SolrDocumentList results = response.getResults();
        return results;
    }

新增

@RequestMapping("/add")
    public Object add() throws Exception {
        SolrInputDocument document = new SolrInputDocument();
        document.addField("id", 1002L);
        document.addField("item_brand", "三星");
        document.addField("item_goodsid", "66666");
        document.addField("item_seller", "三星旗舰店");
        document.addField("item_title", "三星千元机震撼来袭");
        document.addField("item_category", "手机");
        document.addField("item_price", "1499");
        document.addField("item_image", "http://xiaomi.jpg");
        document.addField("last_modified", "2019-04-22");
        UpdateResponse add = solrClient.add("test",document);
        int status = add.getStatus();
        solrClient.commit("test");
        return status;
    }

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄