zoukankan      html  css  js  c++  java
  • Elasticsearch实现类Google高级检索

    文章转载自:
    https://mp.weixin.qq.com/s?__biz=MzI2NDY1MTA3OQ==&mid=2247483914&idx=1&sn=436f81480c2a15af6345183f8eebf16e&chksm=eaa82a22dddfa334c95c3f4bd227c9a78bba20715494b464c5068bc260d9b4320412736fed77&scene=21#wechat_redirect

    一、高级检索的功能点

    通过高级搜索配置搜索项,能更准确的过滤掉不相干信息,获取最想要的检索信息。

    二、高级检索拆分
    1、包含以下全部的关键词:

    需要分词处理;
    若需要指定字段,则使用matchQuery实现;
    若无需指定字段的全文检索,则使用queryStringQuery实现;
    2、包含以下的完整关键词 :

    需要完整匹配字符,使用wildcardQuery结合”*”实现;
    3、包含以下任意一个关键词 :

    空格分隔每个关键词,需要将多个词空格拆分,然后对每个关键词通过should结合wildcardQuery遍历实现;
    4、不包括以下关键词 :

    包含以下全部关键词的反面,
    若需要指定字段,则使用must_not结合matchQuery实现;
    若无需指定字段,则使用must_not结合queryStringQuery实现;
    5、限定要搜索的网页的时间是:

    限定搜索的开始和结束时间,通过rangeQuery实现。
    6、关键词位置:

    根据关键词位置的不同,采用不同的实现;
    关键词位于title字段:指定title进行检索;
    关键词位于content字段:指定content进行检索;
    关键词位于全部字段:不指定字段进行检索,多使用 queryStringQuery实现。

    三、DSL高级检索实现

        POST detail_index/_search
    
        {
    
          "from" : 0,
    
          "size" : 10,
    
          "query" : {
    
            "bool" : {
    
              "must" : [
    
                {
    
                  "match" : {
    
                    "title" : {
    
                      "query" : "苹果乔布斯",
    
                      "operator" : "OR",
    
                      "prefix_length" : 0,
    
                      "max_expansions" : 50,
    
                      "fuzzy_transpositions" : true,
    
                      "lenient" : false,
    
                      "zero_terms_query" : "NONE",
    
                      "boost" : 1.0
    
                    }
    
                  }
    
                },
    
                {
    
                  "wildcard" : {
    
                    "title.keyword" : {
    
                      "wildcard" : "*苹果总裁库克*",
    
                      "boost" : 1.0
    
                    }
    
                  }
    
                },
    
                {
    
                  "range" : {
    
                    "create_time" : {
    
                      "from" : "2017-09-07 00:00:00",
    
                      "to" : "2017-09-15 23:59:59",
    
                      "include_lower" : true,
    
                      "include_upper" : true,
    
                      "boost" : 1.0
    
                    }
    
                  }
    
                }
    
              ],
    
              "must_not" : [
    
                {
    
                  "wildcard" : {
    
                    "title.keyword" : {
    
                      "wildcard" : "*苹果梨*",
    
                      "boost" : 1.0
    
                    }
    
                  }
    
                }
    
              ],
    
              "should" : [
    
                {
    
                  "wildcard" : {
    
                    "title.keyword" : {
    
                      "wildcard" : "*苹果手机*",
    
                      "boost" : 1.0
    
                    }
    
                  }
    
                },
    
                {
    
                  "wildcard" : {
    
                    "title.keyword" : {
    
                      "wildcard" : "*iphoneX*",
    
                      "boost" : 1.0
    
                    }
    
                  }
    
                }
    
              ],
    
              "disable_coord" : false,
    
              "adjust_pure_negative" : true,
    
              "boost" : 1.0
    
            }
    
          },
    
          "_source" : {
    
            "includes" : [
    
              "title",
    
              "content"
    
          ],
    
            "excludes" : [ ]
    
          },
    
          "highlight" : {
    
            "pre_tags" : [
    
              "<span style="color:red">"
    
            ],
    
            "post_tags" : [
    
              "</span>"
    
            ],
    
            "fragment_size" : 100,
    
            "number_of_fragments" : 5,
    
            "require_field_match" : true,
    
            "fields" : {
    
              "title" : { }
    
          }
    
          }
    
        }
    
  • 相关阅读:
    6个laravel常用目录路径函数
    Laravel上传产品图片Uploading img
    Laravel删除产品-CRUD之delete(destroy)
    Laravel编辑产品-CRUD之edit和update
    Laravel展示产品-CRUD之show
    Laravel创建产品-CRUD之Create and Store
    内存泄露从入门到精通三部曲之排查方法篇
    P问题、NP问题、NPC问题、NP难问题的概念
    二维码的生成细节和原理
    一分钟认识GitHub
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/12881286.html
Copyright © 2011-2022 走看看