Elasticsearch 分析器的高级用法一(同义词,高亮搜索)

news2024/10/5 16:49:55

Elasticsearch 分析器的高级用法一(同义词,高亮搜索)

  • 同义词
    • 简介
    • 分析使用
    • 同义词案例
  • 高亮搜索
    • 高亮搜索策略
      • unified
      • plain
      • vh

同义词

简介

在搜索场景中,同义词用来处理不同的查询词,有可能是想表达相同的搜索目标。

例如:查询“北京大学”和“北大”时,其实时想搜索同一个内容。

在ES内置的分词过滤器中,有两个同义词分词过滤器(synonym 和 synonym_graph)

官网:

synonym: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/analysis-synonym-tokenfilter.html
synonym_graph: https://www.elastic.co/guide/en/elasticsearch/reference/7.10/analysis-synonym-graph-tokenfilter.html

synonym_graph 相对于 synonym 对于多词同义词有更精确的效果

在这里插入图片描述
官方建议,在索引时使用 synonym ,在 查询时 使用 synonym_graph

分析使用

可以借助同义词过滤器实现 同义词分析器

指定同义词内容,有两种方式

  • 直接通过synonyms 指定,同义词用 , 分割
# synonym
POST _analyze
{
  "tokenizer": "ik_smart",
  "filter": {
    "type": "synonym",
    "synonyms": [
      "北京大学, 北大"
    ]
  },
  "text": "北京大学"
}
  • 通过文件方式指定 同义词
  1. 在 es/config 目录下 创建文件 analysis/synonym.txt
    在这里插入图片描述
  2. 在 synonym.txt 中编辑同义词内容
# 通过文件方式指定同义词
POST _analyze
{
  "tokenizer": "ik_smart",
  "filter": {
    "type": "synonym",
    "synonyms_path": "analysis/synonym.txt"
  },
  "text": "北京大学"
}

上述两种请求方式,结果相同,如下:

在这里插入图片描述
从结果可以看出,北京大学 和 北大 都被当做同义词分析。

同义词案例

案例要求:通过大学简称或全称都能搜索到对应大学的内容

  1. 创建大学索引

    # 创建一个索引
    # 包含一个text字段,索引分析器为 ik_smart
    # 搜索分析器为自定义的 同义词分析器,同义词内容在analysis/synonym.txt 中
    #  "updateable": true  表示允许动态修改同义词
    PUT /college
    {
      "settings": {
        "index": {
          "analysis": {
            "analyzer": {
              "my_synonyms": {
                "tokenizer": "ik_smart",
                "filter": [ "synonym" ]
              }
            },
            "filter": {
              "synonym": {
                "type": "synonym_graph",
                "synonyms_path": "analysis/synonym.txt",  
                "updateable": true                        
              }
            }
          }
        }
      },
      "mappings": {
        "properties": {
          "name": {
            "type": "text",
            "analyzer": "ik_smart",
            "search_analyzer": "my_synonyms"              
          }
        }
      }
    }
    
  2. 指定同义词
    在 analysis/synonym.txt 文件中 写入同义词 ”北京大学,北大“

    在这里插入图片描述

  3. 初始化数据

    POST /college/_bulk
    {"index":{}}
    {"content":"北大,国内最高学府"}
    {"index":{}}
    {"content":"北外,中华人民共和国教育部直属的全国重点大学,211"}
    
  4. 测试搜索

    GET /college/_search
    {
      "query": {
        "match": {
          "content": "北京大学"
        }
      }
    }	
    

    在这里插入图片描述

  5. 修改同义词文件

    上述同义词文件中,没有指定 北外 和 北京外国语。所以直接搜索北京外国语大学是没有结果的。

    这时,我们需要动态的添加新的 同义词。
    ES官方提供了 修改分析器资源的 API POST /{index}/_reload_search_analyzers
    并要求必须指定"updateable": true

    我在创建索引时 ,已经指定了 "updateable": true,这里可以直接修改 synonym.txt 文件

    a. 添加 同义词

    echo 北京外国语大学,北外,北京外国语 >> synonym.txt
    

    在这里插入图片描述

    b. 发送请求 重新加载分析器资源

    POST /college/_reload_search_analyzers
    
  6. 测试搜索

    GET /college/_search
    {
      "query": {
        "match": {
          "content": "北京外国语大学"
        }
      }
    }
    

    在这里插入图片描述

高亮搜索

“高亮显示”的英文为highlight,是指在搜索结果中通过对文档标题的部分匹配字符串进行颜色(如红色)或者字体(如加粗)等处理,在视觉呈现上使匹配的字符串与未匹配的字符串有明显的区分效果。

ES 提供了高亮搜索功能

下面搜索content 字段,并对搜索内容进行高亮显示

PUT /light
{
  "mappings": {
    "properties": {
      "content":{
        "type":"text"
      }
    }
  }
}

POST /light/_bulk
{"index":{}}
{"content":"北京大学,国内最高学府,211,985"}
{"index":{}}
{"content":"北京,中国首都,帝都"}


GET /light/_search
{
  "_source": "content",
  "query": {
    "match": {
      "content": "北京"
    }
  },
  "highlight": {
    "fields": {
      "content": {
        // 设定 高亮搜索策略,默认是unified
        "type":"plain",
        // 设定 高亮标签,默认是<em></em>
        "pre_tags": "<hight>",
        "post_tags": "</hight>"
      }
    }
  }
}

在这里插入图片描述

高亮搜索策略

ES支持的高亮显示搜索策略有plain、unified和fvh,用户可以根据搜索场景进行选择。

unified

默认策略

unified策略是由Lucene Unified Highlighter来实现的,其使用BM25(Best Match25)算法进行匹配

plain

plain是精准度比较高的策略,因此它必须将文档全部加载到内存中,并重新执行查询分析。由此可见,plain策略在处理大量文档或者大文本的索引进行多字段高亮显示搜索时耗费的资源比较严重。因此plain策略适合在单个字段上进行简单的高亮显示搜索。

vh

为了弥补上述两种策略在大文本索引高亮显示搜索时的速度低问题,Lucene还提供了基于向量的高亮显示搜索策略fvh(fast vector highlighter)。fvh策略更适合在文档中包含大字段的情况(如超过1MB)下使用,如果计算机的I/O性能更好(如使用SSD),则fvh策略在速度上的优势更加明显。

如果要使用fvh策略进行高亮显示搜索,需要设定字段的 term_vector属性值为with positions offsets

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1695426.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决在cmd里下载的库,但IDLE还是显示不存在的问题

原因一&#xff1a; 环境变量配置 首先&#xff0c;你需要确认你安装库的时候使用的Python环境是否和IDLE使用的Python环境是同一个。如果cmd中你使用的是系统路径下的Python&#xff0c;而IDLE使用的是另一个路径下的Python&#xff0c;那么你在cmd中下载的库&#xff0c;IDL…

编程实现标题栏窗口摇动——显示桌面的未公开细节研究

目录 前言 一、“窗口摇动”功能内部原理 二、explorer.exe 中的 “窗口抖动” 实现 三、“切换到桌面” 功能所扩展的内部细节 四、概念验证 五、进一步研究如何自定义保留窗口列表 原文出处链接&#xff1a;[https://blog.csdn.net/qq_59075481/article/details/139204…

内网穿透--Spp-特殊协议-上线

免责声明:本文仅做技术交流与学习... 目录 spp项目: 一图通解: 1-下载spp 2-服务端执行命令 3-客户端执行命令 4-服务端cs监听&生马 spp项目: GitHub - esrrhs/spp: A simple and powerful proxy 支持的协议&#xff1a;tcp、udp、udp、icmp、http、kcp、quic 支持的…

Gb 2024-05-22开源项目日报Top10

根据Github Trendings的统计,今日(2024-05-22统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3非开发语言项目2Jupyter Notebook项目2Rust项目2JavaScript项目1Lua项目1编程面试大学:成为软件工程师的全面学习计划 创建周期:2…

在ubuntu22.04里网站源码连不上mysql数据库

在ubuntu22.04里网站源码连不上mysql数据库。后来找到了原因。 连不上的时候有报错信息&#xff1a; ERROR 1698 (28000): Access denied for user rootlocalhost 用在网上搜索该报错信息&#xff0c;找到了两篇有用的文章&#xff0c;用这两篇文章里的处理方法解决了问题。 …

三个有意思的链表面试题的完成

上一篇博客我们已经完成了链表的所有内容&#xff0c;那么这一篇博客我们来看一下三个特别有意思的链表题目。 **第一个题目如下&#xff1a;**相信不少朋友看到这题目就已经晕了&#xff0c;那就简单说明下这个题目&#xff0c;题目就是创建一个链表&#xff0c;其中每个节点…

比勤奋更重要的是系统思考的能力

不要在接近你问题症状的地方寻找解决办法&#xff0c;要追溯过去&#xff0c;查找问题的根源。通常&#xff0c;最有效的活动是最微妙的。有时最好按兵不动&#xff0c;使系统自我修正&#xff0c;或让系统引导行动。有时会发现&#xff0c;最好的解决办法出现在完全出乎预料的…

Redis 实战 - 缓存异常及解决方案

文章目录 概述一、缓存穿透1.1 缓存穿透是什么1.2 解决方案 二、缓存击穿2.1 缓存击穿是什么2.2 解决方案 三、缓存雪崩3.1 缓存雪崩是什么3.2 解决方案 四、拓展4.1 缓存预热4.2 缓存降级 五、结语 把今天最好的表现当作明天最新的起点……&#xff0e;&#xff5e; 概述 在实…

【漫画算法】哈希表:古代皇帝的秘密魔法书

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

如何确保大模型 RAG 生成的信息是基于可靠的数据源?

在不断发展的人工智能 (AI) 领域中&#xff0c;检索增强生成 (RAG) 已成为一种强大的技术。 RAG 弥合了大型语言模型 (LLM) 与外部知识源之间的差距&#xff0c;使 AI 系统能够提供更全面和信息丰富的响应。然而&#xff0c;一个关键因素有时会缺失——透明性。 我们如何能够…

Android窗口管理

一 概述 本篇文章主要讲 Window、WindowManager、WindowManagerService 三者之间的关系及其运行机制。总的来说 Window 表示的是一种抽象的功能集合&#xff0c;具体实现为 PhoneWindow。WindowManager 是外界访问 Window 的入口&#xff0c;对 Window 的访问必须通过 Window…

状态转换图

根据本章开头讲的结构化分析的第3条准则,在需求分析过程中应该建立起软件系统的行为模型。状态转换图(简称为状态图)通过描绘系统的状态及引起系统状态转换的事件,来表示系统的行为。此外,状态图还指明了作为特定事件的结果系统将做哪些动作(例如,处理数据)。因此,状态图提供了…

【轻松压缩,一键搞定】您的图片处理神器来了!

压图地址 一个功能强大的图片处理工具&#xff0c;它可以满足用户对于图片压缩、格式转换、质量调节以及长图片分割等多种需求。 【轻松压缩&#xff0c;一键搞定】您的图片处理神器来了&#xff01; &#x1f389; 您是否曾为图片太大无法上传而烦恼&#xff1f;是否为图片格…

rk3568_atomic

文章目录 前言一、atomic是什么?二、原子操作API函数1.atomic原子操作2.原子位操作API三、atomic驱动实验总结前言 本文记录的是正点原子rk3568开发板的atomic实验 一、atomic是什么? 不同的线程在进行读写的过程中,可能会冲突乱入,导致会有预想不到的结果。所以为了让数…

信息系统项目管理师0131:输出(8项目整合管理—8.7监控项目工作—8.7.3输出)

点击查看专栏目录 文章目录 8.7.3 输出8.7.3 输出 工作绩效报告工作绩效信息可以用实体或电子形式加以合并、记录和分发。基于工作绩效信息,以实体或电子形式编制形成工作绩效报告,以制定决策、采取行动或引起关注。根据项目沟通管理计划,通过沟通过程向项目干系人发送工作绩…

文档档案管理系统整体建设方案书(实际项目原件word2024)

1.系统概述 1.1.需求描述 1.2.需求分析 1.3.重难点分析 1.4.重难点解决措施 2.系统架构设计 2.1.系统架构图 2.2.关键技术 数据备份技术 3.系统功能设计 3.1.功能清单列表 3.2.基础数据管理 3.3.位置管理 3.4.文档使用 3.5.文档管理 软件全套资料包获取方式①&#xff1a;软件项…

[windows系统安装/重装系统][step-4][番外篇-2]N卡驱动重装 |解决:开机几小时后电脑卡顿 | 后台自动运行了上千个Rundll32进程问题

现象 开机几小时后&#xff0c;电脑变卡&#xff0c;打开后台管理器都卡&#xff0c;后台管理去转圈圈一小会儿后看到后台进程上千个&#xff0c;好多个Rundll32进程 重启下运行会稍快 重启后运行快&#xff0c;后台管理器反应也快 打开后台管理器不卡&#xff08;几小时后打…

Hadoop3:HDFS中DataNode与NameNode的工作流程

一、DataNode中的数据情况 数据位置 /opt/module/hadoop-3.1.3/data/dfs/data/current/BP-823420375-192.168.31.102-1714395693863/current/finalized/subdir0/subdir0块信息 每个块信息&#xff0c;由两个文件保存&#xff0c;xxx.meta保存的是数据长度、校验和、时间戳&am…

基于Java、SpringBoot和uniapp在线考试系统安卓APP和微信小程序

摘要 基于Java、SpringBoot和uniapp的在线考试系统安卓APP微信小程序是一种结合了现代Web开发技术和移动应用技术的解决方案&#xff0c;旨在为教育机构提供一个方便、高效和灵活的在线考试平台。该系统采用Java语言进行后端开发&#xff0c;使用SpringBoot框架简化企业级应用…

netmask一键修改子网掩码(KALI工具系列八)

目录 1、KALI LINUX简介 2、netmask工具简介 3、在KALI中使用netmask 3.1 目标主机IP&#xff08;win&#xff09; 3.2 KALI的IP 4、命令示例 4.1 查看版本 4.2 修改etho的子网掩码 4.3 查看状态信息 4.4 查看子网掩码 4.5 查看范围 4.6 DNS查看 5.、总结 1、KAL…