<object id="xwuag"></object>
      1. <tbody id="xwuag"><pre id="xwuag"><video id="xwuag"></video></pre></tbody>
        <progress id="xwuag"></progress>

        <nav id="xwuag"><big id="xwuag"><rt id="xwuag"></rt></big></nav>
        <em id="xwuag"></em>

        <nav id="xwuag"></nav><rp id="xwuag"></rp>
        <li id="xwuag"></li>
      2. <rp id="xwuag"></rp>
        <s id="xwuag"></s><th id="xwuag"><pre id="xwuag"><video id="xwuag"></video></pre></th>
      3. <nav id="xwuag"><center id="xwuag"></center></nav>
          <dd id="xwuag"><big id="xwuag"></big></dd>

          最佳字段编辑

          假设有个网站允许用户搜索博客的内容, 以下面两篇博客内容文档为例:

          PUT /my_index/my_type/1
          {
              "title": "Quick brown rabbits",
              "body":  "Brown rabbits are commonly seen."
          }
          
          PUT /my_index/my_type/2
          {
              "title": "Keeping pets healthy",
              "body":  "My quick brown fox eats rabbits on a regular basis."
          }

          用户输入词组 “Brown fox” 然后点击搜索按钮。事先,我们并不知道用户的搜索项是会在 title 还是在 body 字段中被找到,但是,用户很有可能是想搜索相关的词组。用肉眼判断,文档 2 的匹配度更高,因为它同时包括要查找的两个词:

          现在运行以下 bool 查询:

          {
              "query": {
                  "bool": {
                      "should": [
                          { "match": { "title": "Brown fox" }},
                          { "match": { "body":  "Brown fox" }}
                      ]
                  }
              }
          }

          但是我们发现查询的结果是文档 1 的评分更高:

          {
            "hits": [
               {
                  "_id":      "1",
                  "_score":   0.14809652,
                  "_source": {
                     "title": "Quick brown rabbits",
                     "body":  "Brown rabbits are commonly seen."
                  }
               },
               {
                  "_id":      "2",
                  "_score":   0.09256032,
                  "_source": {
                     "title": "Keeping pets healthy",
                     "body":  "My quick brown fox eats rabbits on a regular basis."
                  }
               }
            ]
          }

          为了理解导致这样的原因, 需要回想一下 bool 是如何计算评分的:

          1. 它会执行 should 语句中的两个查询。
          2. 加和两个查询的评分。
          3. 乘以匹配语句的总数。
          4. 除以所有语句总数(这里为:2)。

          文档 1 的两个字段都包含 brown 这个词,所以两个 match 语句都能成功匹配并且有一个评分。文档 2 的 body 字段同时包含 brownfox 这两个词,但 title 字段没有包含任何词。这样, body 查询结果中的高分,加上 title 查询中的 0 分,然后乘以二分之一,就得到比文档 1 更低的整体评分。

          在本例中, titlebody 字段是相互竞争的关系,所以就需要找到单个 最佳匹配 的字段。

          如果不是简单将每个字段的评分结果加在一起,而是将 最佳匹配 字段的评分作为查询的整体评分,结果会怎样?这样返回的结果可能是: 同时 包含 brownfox 的单个字段比反复出现相同词语的多个不同字段有更高的相关度。

          dis_max 查询编辑

          不使用 bool 查询,可以使用 dis_max 即分离 最大化查询(Disjunction Max Query) 。分离(Disjunction)的意思是 或(or) ,这与可以把结合(conjunction)理解成 与(and) 相对应。分离最大化查询(Disjunction Max Query)指的是: 将任何与任一查询匹配的文档作为结果返回,但只将最佳匹配的评分作为查询的评分结果返回

          {
              "query": {
                  "dis_max": {
                      "queries": [
                          { "match": { "title": "Brown fox" }},
                          { "match": { "body":  "Brown fox" }}
                      ]
                  }
              }
          }

          得到我们想要的结果为:

          {
            "hits": [
               {
                  "_id":      "2",
                  "_score":   0.21509302,
                  "_source": {
                     "title": "Keeping pets healthy",
                     "body":  "My quick brown fox eats rabbits on a regular basis."
                  }
               },
               {
                  "_id":      "1",
                  "_score":   0.12713557,
                  "_source": {
                     "title": "Quick brown rabbits",
                     "body":  "Brown rabbits are commonly seen."
                  }
               }
            ]
          }

          備份地址:http://www.lvesu.com/blog/es/_best_fields.html

          国产成人午夜福利r在线观看_欧美性受xxxx孕妇_白丝娇喘过膝袜爽短裙调教_jizz jizz xxxx