带你读《Elastic Stack 实战手册》之34:——3.4.2.17.3.全文搜索/精确搜索(10)

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 带你读《Elastic Stack 实战手册》之34:——3.4.2.17.3.全文搜索/精确搜索(10)


《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.3.全文搜索/精确搜索(9) https://developer.aliyun.com/article/1229932


4.2 match_bool_prefix

 

match_bool_prefix 查询会将被查询的内容根据分词器解析成词项进行单独的查询。除最后一个词外的每个词项都是用 term 查询。最后一个词项用于 prefix 查询。

 

比如下面这个查询:


GET my-index-000001/_search
{
  "query": {
    "match_bool_prefix" : {
      "message" : "quick brown f"
    }
  }
}

这里分词器会产生 "quick"、"brown"、"f" 三个词项,然后组成与下面效果一致的 bool 查询。


GET my-index-000001/_search
{
  "query": {
    "bool" : {
      "should": [
        { "term": { "message": "quick" }},
        { "term": { "message": "brown" }},
        { "prefix": { "message": "f"}}
      ]
    }
  }
}

match_bool_prefix 在使用的时候有以下一些注意点:

 

1、analyzer 的设置对搜索词项的解析非常重要,最后一个词项的 prefix 查询是否符合需求和analyzer 很有关系。

2、match_bool_prefix 查询支持 match 查询中 minimum_should_match 和 operater 参数,这次参数会应用到解析的子查询中(bool 后的 term 查询)。在大多数情况下,构造的 bool 查询中的子句数量和被搜索短语解析出的词项数量一致。

3、fuzziness、prefix_length、max_expansions、fuzzy_transpositions 和 fuzzy_rewrite 参数可以应用到为除了最后一项之外的所有项构造的 term 子查询。它们对为最后一个词构造的 prefix 查询没有任何影响。

 


《Elastic Stack 实战手册》——三、产品能力——3.4.入门篇——3.4.2.Elasticsearch基础应用——3.4.2.17.Text analysis, settings 及 mappings——3.4.2.17.3.全文搜索/精确搜索(11) https://developer.aliyun.com/article/1229930

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
前端开发 Java 测试技术
SpringBoot整合WebSocket实现定时任务消息推送
SpringBoot整合WebSocket实现定时任务消息推送
553 0
|
负载均衡 监控 网络协议
在 Java 中使用 WebSocket
在 Java 中使用 WebSocket
672 1
|
缓存 Java Linux
Spring框架中的@Conditional系列注解
Spring框架中的@Conditional系列注解
241 0
|
JavaScript 开发者 UED
自定义指令:让 Vue 开发更有趣(下)
自定义指令:让 Vue 开发更有趣(下)
|
前端开发 JavaScript API
JavaScript学习 -- axios的使用
JavaScript学习 -- axios的使用
131 0
|
JavaScript 前端开发
重学JavaWeb第三天(十)
重学JavaWeb第三天(十)
234 0
|
区块链
dapp质押挖矿系统开发设计概述
DApp(去中心化应用)质押挖矿系统是基于区块链技术构建的一种去中心化应用,它结合了质押和挖矿的概念,让用户可以通过质押代币来参与挖矿活动并获得相应的奖励。
|
JSON 分布式计算 Hadoop
创建索引库和索引演示 | 学习笔记
快速学习创建索引库和索引演示
创建索引库和索引演示 | 学习笔记
|
供应链 监控 前端开发
基于Springboot实现汽车4S店销售管理系统
本项目基于Springboot框架开发实现,主要针对汽车4S店的销售信息进行管理,名为4S管家,主要包含管理员用户和员工用户,主要实现的功能有汽车销售信息管理、配件销售订单管理、售后服务订单管理、库存管理、客户管理、员工管理、系统用户管理、日志管理、系统说明等。特色功能包含图形报表统计功能,数据导入导出功能等。...
298 0
基于Springboot实现汽车4S店销售管理系统
|
SQL 数据库 Python
【技术实验】Elasticsearch 做数据库系列之一:表结构定义
Elaticsearch 有非常好的查询性能和查询语法,在一定场景下可以替代RDBMS做为OLAP。《Elasticsearch 做数据库系列》系列文章通过类比SQL的概念,实验并学习Elasticsearch聚合DSL的语法和语义,并用 python 实现一个翻译器,能够使用 SQL 来完成 Elasticsearch 聚合DSL一样的功能。
8240 0
【技术实验】Elasticsearch 做数据库系列之一:表结构定义