当前位置: 首页 > news >正文

Elasticsearch高级搜索技术-全文搜索

目录

倒排索引 (Inverted Index)

示例

分词器 (Analyzer)

评分机制 (Scoring)

查询执行

match 查询

match_phrase 查询


全文搜索是Elasticsearch的核心功能之一,它通过复杂的算法和数据结构来提供高效的搜索能力。为了深入理解其工作原理,我们需要探讨几个关键概念:倒排索引、分词器、评分机制以及查询的执行过程。

倒排索引 (Inverted Index)

倒排索引是全文搜索引擎的基础。与传统的正向索引(记录每个文档中包含哪些词)不同,倒排索引记录的是每个词出现在哪些文档中。这样当用户输入一个搜索请求时,系统可以快速定位到所有含有这些词的文档。

示例

假设有一个小型数据库,包含两篇新闻文章:

  • 文章1: 人工智能正在改变世界。
  • 文章2: 未来的世界将由智能机器主导。

倒排索引可能看起来像这样:

{"人工智能": [1],"正在": [1],"改变": [1],"世界": [1, 2],"未来": [2],"将": [2],"由": [2],"智能": [2],"机器": [2],"主导": [2]
}

分词器 (Analyzer)

在创建倒排索引之前,Elasticsearch会使用分词器对文本进行处理。分词器负责将文本分解成单个词语,并且可能会应用如小写转换、停用词移除等操作。不同的语言和地区通常需要不同的分词策略。

例如,在中文环境中,可能使用ik分词器或smartcn分词器来正确地分割中文句子。

评分机制 (Scoring)

Elasticsearch使用TF-IDF(Term Frequency - Inverse Document Frequency)和其他因素来计算每个文档的相关性得分。TF-IDF反映了某个词在特定文档中的重要程度及其在整个文集中的普遍性。此外,还可以考虑诸如短语匹配度、字段权重等因素。

查询执行

当你发起一个查询时,Elasticsearch会解析这个查询并生成一个内部表示形式,然后根据这个表示形式去查找倒排索引,最后返回结果。

match 查询

match查询会对输入的文本进行同样的分析过程,就像在索引过程中一样。这确保了查询条件能够准确对应到已有的词汇表上。

GET /news/_search
{"query": {"match": {"content": "人工智能"}}
}
match_phrase 查询

match_phrase查询用于精确匹配短语,同时允许通过slop参数控制短语内词之间的距离。

GET /news/_search
{"query": {"match_phrase": {"content": {"query": "人工智能","slop": 2  // 允许最多两个其他单词插在这两个词之间}}}
}

这里的slop值为2意味着“人工智能”这两个词可以在文中相隔不超过两个其他词的情况下仍被视为匹配。

http://www.lryc.cn/news/463934.html

相关文章:

  • 案例分享—国外优秀UI卡片设计作品赏析
  • Go语言基础学习(Go安装配置、基础语法)
  • STM32—FLASH闪存
  • AP上线的那些事儿(1)capwap建立过程、设备初始化以及二层上线
  • 10 django管理系统 - 管理员管理 - 新建管理员(通过模态框和ajax实现)
  • Mysql中表字段VARCHAR(N)类型及长度的解释
  • git提交信息写错处理方式
  • C#从零开始学习(用unity探索C#)(unity Lab1)
  • 【SpringBoot】15 Echarts+Thymeleaf 绘制各种图表
  • 网络学习笔记
  • [论文笔记]HERMES 3 TECHNICAL REPORT
  • MySQL-19.多表设计-一对多-外键
  • MySQL程序介绍<一>
  • Leetcode 第 419 场周赛题解
  • 那些年 我们说走就走
  • MySQL初识
  • 基于Java微信小程序的的儿童阅读系统的详细设计和实现(源码+lw+部署文档+讲解等)
  • 利用 OBS 推送 WEBRTC 流到 smart rtmpd
  • 【python】极简教程3-函数
  • Python案例小练习——小计算器
  • 仓储数字化蓝图
  • 【数字图像处理】第5章 图像空域增强方法
  • idea 发布jar包
  • c语言字符串函数strstr,strtok,strerror
  • 【Java】—JavaBean转换方法详解
  • [Vue3核心语法] setup语法糖
  • RabbitMQ 入门(三)SpringAMQP五种消息类型(Basic Queue)
  • 2024双十一买什么好?双十一高性价比数码好物推荐!
  • MySQL 查找连续相同名称的记录组,并保留每组内时间最大的一条记录
  • three.js 使用geojson ,实现中国地图区域,边缘流动效果