zoukankan      html  css  js  c++  java
  • Elasticsearch全文检索,高亮关键字

    问题

    用如下这样的term方式,可以高亮

    .setQuery(QueryBuilders.termQuery("PARAM_NAME", "a"))
    {
    "query": {
    "term": {
    "body.priority": "error"
    }
    },
    "highlight" : {
            "fields" : {
                "*" : {}
            }
        }
    }

    用如下这样queryString方式,高亮无效

    .queryStringQuery("asdf"))
    {
          "query" : {
            "query_string" : {
              "query" : "ERROR"
            }
          },
          "highlight" : {
            "fields" : {
              "*" : {}
            }
          }
    }

    解决

    增加require_field_match:false,之后匹配的field设置为false之后可以高亮了。

    {
      "query": {
        "query_string": {
          "query": "test"
        }
      },
      "highlight": {
        "require_field_match": false,
        "explain": true,
        "fields": {
          "*": {}
        }
      }
    }

    api修改

    String query = "{"query": {"query_string": {"query": "test"}}}";
    SearchRequestBuilder builder = client.prepareSearch("twitter").setTypes("tweet").setQuery(query) 
           .addHighlightedField("*")       
     .setHighlighterRequireFieldMatch(false)      
      .setSize(10);
    SearchResponse response  = builder.execute().actionGet();


    作者:水他
    链接:http://www.jianshu.com/p/342119123d64
    來源:简书
    著作权归作者所有。
  • 相关阅读:
    行规
    不要在对抽象类接口abstract virtual什么的混淆不清了
    MQ与Webservice的区别
    Asp.net MVC流程简述
    Lambda表达式树
    mysql用户管理、权限管理
    mysql锁、事务、存储引擎、索引
    mysql新增、删除、修改
    mysql基础
    linux的任务计划与mail
  • 原文地址:https://www.cnblogs.com/crystaltu/p/7723341.html
Copyright © 2011-2022 走看看