ElasticSearch(四)深入搜索查询

这篇具有很好参考价值的文章主要介绍了ElasticSearch(四)深入搜索查询。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、评分机制

相关性

搜索的相关性算分,描述了一个文档和查询语句匹配成都;es 会对每个匹配条件的结果进行算分,打分的本质是排序;5之前采用TF-IDF,后面采用BM 25;

(*注意:往往分词器分词的结果也会对得分产生影响,可以先看看分词的结果再去判断评分)

算法

TF-IDF

是一种用于信息检索与数据挖掘的常用加权技术;

计算公式:

ElasticSearch(四)深入搜索查询,ElasticSearch,elasticsearch,大数据,搜索引擎

TF是词频

IDF是逆向文本率:每个检索词在索引中出现的频率,频率越高,相关性越低;(指的是整个文档中的占比)十篇文章中都有结果和一篇文章中有结果,显然一篇文章有结果相关性更强;

字段长度归一值:字段越短,字段占比越高,相关度越高;

BM25 算法
主要针对词频的增加,评分增加逐渐趋于平缓的优化;

二、算分分析

GET /索引名称/_search

{

        "explain":true,
        "query":{
                "match":{
                        "title":"java设计模式"

                }        

        },

        "size":10

}

三、Boosting

Boosting是控制相关度的一种手段;

参数boost的含义:
当boost > 1时,打分的权重相对性提升
当0 < boost <1时,打分的权重相对性降低
当boost <0时,贡献负分

返回匹配positive查询的文档并降低匹配negative查询的文档相似度分。

GET /test_score/_search

{
    "query":{
        "boosting":{
            "positive":{
                "term":{
                    "content":"elasticsearch"
                }
            },
            "negative":{
                "term":{
                    "content":"like"
                }
            },
            "negative_boost":0.2
        }
    }
}

 "negative_boost":0.2

内容包含like的得分乘以0.2;

四、布尔查询

一个bool查询是一个或多个查询子句组合;

                a、must: 必须匹配,共享算分;

                b、should:选择性匹配 相当于或 贡献算分;

                c、must_not:必须不匹配,不贡献

                d、filter:必须匹配,不贡献算分

Query和filter4两种不同的上线文:Query 相关性算分,filter不需要算分,可以利用Cache,性能更好;

复合查询语句的相关性评分是将子查询语句合并得到的结果;

 GET /索引名/_search
{
    "query":{
        "bool":{
            "must":{
                "match":{
                    "remark":"java"
                }
            },
            "filter":{
                "term":{
                    "sex":"1"
                }
            },
            "must_not":{
                "range":{
                    "age":{
                        "gte":30
                    }
                }
            },
            "should":[
                {
                    "term":{
                        "address.keyword":{
                            "value":"安徽"
                        }
                    }
                },
                {
                    "term":{
                        "address.keyword":{
                            "value":"安徽合肥"
                        }
                    }
                }
            ],
            "minimum_should_match":1
        }
    }
}

使用bool查询控制算分

 GET /索引名/_search

{
    "query":{
        "bool":{
            "should":[
                {
                    "match":{
                        "title":{
                            "query":"apple,ipad",
                            "boost":1
                        }
                    }
                },
                {
                    "match":{
                        "content":{
                            "query":"apple,ipad",
                            "boost":4
                        }
                    }
                }
            ]
        }
    }
}文章来源地址https://www.toymoban.com/news/detail-806969.html

到了这里,关于ElasticSearch(四)深入搜索查询的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 分布式搜索引擎ElasticSearch的RestClient查询文档

         

    2024年02月12日
    浏览(55)
  • 深入了解Elasticsearch搜索引擎篇:倒排索引、架构设计与优化策略

    倒排索引是一种用于快速检索的数据结构,常用于搜索引擎和数据库中。与传统的正排索引不同,倒排索引是根据来建立索引,而不是根据文档ID。 倒排索引的建立过程如下:首先,将每个文档拆分成一系列的或词项,然后建立一个词项到文档的映射。对每个关

    2024年02月12日
    浏览(41)
  • Spring Cloud学习(十一)【深入Elasticsearch 分布式搜索引擎03】

    聚合(aggregations)可以实现对文档数据的统计、分析、运算。聚合常见的有三类: 桶(Bucket)聚合:用来对文档做分组 TermAggregation:按照文档字段值分组 Date Histogram:按照日期阶梯分组,例如一周为一组,或者一月为一组 度量(Metric)聚合:用以计算一些值,比如:最大值

    2024年01月23日
    浏览(37)
  • elasticsearch[五]:深入探索ES搜索引擎的自动补全与拼写纠错:如何实现高效智能的搜索体验

    前一章讲了搜索中的拼写纠错功能,里面一个很重要的概念就是莱文斯坦距离。这章会讲解搜索中提升用户体验的另一项功能 - [自动补全]。本章直接介绍 ES 中的实现方式以及真正的搜索引擎对自动补全功能的优化。 大家对上面的这个应该都不陌生,搜索引擎会根据你输入的

    2024年01月24日
    浏览(40)
  • elasticsearch(ES)分布式搜索引擎03——(RestClient查询文档,ES旅游案例实战)

    文档的查询同样适用昨天学习的 RestHighLevelClient对象,基本步骤包括: 1)准备Request对象 2)准备请求参数 3)发起请求 4)解析响应 我们以match_all查询为例 3.1.1.发起查询请求 代码解读: 第一步,创建 SearchRequest 对象,指定索引库名 第二步,利用 request.source() 构建DSL,DSL中可

    2024年02月07日
    浏览(40)
  • ElasticSearch(四)深入搜索查询

    搜索的相关性算分,描述了一个文档和查询语句匹配成都;es 会对每个匹配条件的结果进行算分,打分的本质是排序;5之前采用TF-IDF,后面采用BM 25; (*注意:往往分词器分词的结果也会对得分产生影响,可以先看看分词的结果再去判断评分) TF-IDF 是一种用于信息检索与数

    2024年01月20日
    浏览(39)
  • ElasticSearch搜索技术深入与聚合查询实战

    分词器官方称之为文本分析器,顾名思义,是对文本进行分析处理的一种手段,基本处理逻辑为按照预先制定的分词规则,把原始文档分割成若干更小粒度的词项,粒度大小取决于分词器规则。 分词器的处理过程发生在 Index Time 和 Search Time 两个时期。 Index Time:文档写入并创

    2024年02月06日
    浏览(38)
  • ElasticSearch搜索引擎:数据的写入流程

    (1)ES 客户端选择一个节点 node 发送请求过去,这个节点就是协调节点 coordinating node  (2)协调节点对 document 进行路由,通过 hash 算法计算出数据应该落在哪个分片 shard 上,然后根据节点上维护的 shard 信息,将请求转发到对应的实际处理节点node上 shard = hash(document_id) %

    2023年04月14日
    浏览(51)
  • 搜索引擎(大数据检索)论述[elasticsearch原理相关]

    首先需要大致知道搜索引擎有大致几类:1.全文搜索引擎 2.垂直搜索引擎 3.类目搜索引擎等。 1.全文搜索引擎:是全文本覆盖的,百度,google等都是全文本搜索,就是我搜一个词项“方圆”,那么这个词项可以是数字平方的概念,可以是一个人名,可以是一首歌等,所有的相

    2023年04月08日
    浏览(44)
  • 基于Elasticsearch与Hbase组合框架的大数据搜索引擎

    本项目为学校大数据工程实训项目,共开发4周,答辩成绩不错。代码仓库放文章尾,写的不好,代码仅供参考。 对于结构化数据 ,因为它们具有特定的结构,所以我们一般都是可以通过关系型数据库(MySQL,Oracle 等)的二维表(Table)的方式存储和搜索,也可以建立索引。

    2024年02月09日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包