热门推荐
Elasticsearch:用同义词 API 像专家一样处理短语同义词
2025-01-01 12:12

作者:来自 Elastic Gustavo Llermaly

了解如何在实际场景中通过同义词 API 使用短语同义词。

同义词一直以来都是 Elasticsearch 的核心功能,你可以利用它们来获得出色的搜索结果。人们通常认为同义词只是一对彼此相等的单词,但仅此而已吗

新的同义词 API(synonyms API) 允许你快速轻松地创建和更新同义词,而 synchroute_graph 过滤器可让你顺利处理多词同义词。在本文中,我们将探索配置同义词的不同方法,并使用它们来解决常见但棘手的问题。

  • AI 问题
  • 使用同义词 API 创建同义词
  • 测试
  • 短语同义词支持
  • 扩展同义词

情况是这样的:我们正处于 AI 热潮中,你希望与这项技术相关的文档成为人们获得的第一个搜索结果。想象一个包含 AI 文档和商业智能文档的系统。它既有 AI 文章,也有 Adob​​e Illustrator (AI) 文章。让我们看看同义词如何帮助我们创建满足当今要求的用户体验。

新的同义词 API 允许你创建同义词,而无需上传文件或在节点中运行其他命令来,这通常会导致文件在节点之间不一致或与 一起使用时出现问题。

让我们从创建同义词开始

 

在分析器使用同义词集之前创建同义词集非常重要

现在,让我们配置索引以使用同义词。为了获得更灵活的查询,我们将创建一个包含同义词的字段,另一个不包含同义词的字段。因此 title 不会有同义词,而 title.synonyms 会有同义词。脚本如下

 

请注意,我们将在字段(field)搜索分析器中使用同义词,而不是将其用作索引(index)级别的分析器,因此我们不会将它们存储在索引中,而是在每次查询时生成它们 - 。在分析器中使用它们而不是对它们进行索引,允许你使用新 API 更新同义词并使用更少的磁盘空间。

让我们添加一些文档

 

我们的明星文档是 #2。它讨论了 AI 以及我们想在用户中推广的内容。

现在,让我们开始不使用同义词进行搜索

 
 

正如预期的那样,我们在结果中得到了 Adob​​e Illustrator 课程。

如果我们现在尝试将我们的字段与同义词一起使用会怎么样

 
 

这样更好,但是,商业智能(Business Intelligence)文档在这里做什么

在上一个示例中,我们使用了不支持多词或短语同义词的 token synonym filter 。这就是将 Business Intelligence 与 AI 匹配的原因。Artificial 和 Intelligence 不被视为短语,而是单个标记。让我们来解决这个问题

这是一个简单的修复。我们需要使用 synonym_graph。这是一个允许你处理多词同义词的变体。虽然它只能用作搜索分析器,但与在索引时使用同义词相比,在搜索阶段使用同义词可能更有优势。

我们可以通过运行以下序列来更新搜索分析器而无需重新索引数据

关闭索引

 

注意:如果涉及到修改索引中的 settings 部分,我们需要上面的 _close 操作。

编辑 settings。请注意,现在过滤器的类型是 synonym_graph,而不是 synonym

 

我们再次打开索引

 

现在让我们运行搜索

 
 

太棒了!Business Intelligence 文章已经不存在了。

如果我们明确搜索 artificial intelligence 会发生什么

 
 

Adobe Illustrator?

那么现在发生了什么?这就是我在文章开头所说的,我们需要挑战同义词只是两个等价词的概念。我们还需要考虑扩展的方向性。

默认情况下,如果我们说 AI,Artificial Intelligence,它意味着两件事

  • AI 等同于 Artificial Intelligence
  • Artificial Intelligence 等同于 AI

在这种情况下,第 2 条并不正确。Adobe Illustrator 绝对不同于人工智能。

为了证实这一点,我们可以使用 _analyze API 来查看我们的搜索词是如何转换的

 
 

如你所见,我们正在生成一个 ai token,它存在于 Adob​​e Illustrator 文档中,从而产生了不必要的匹配。

那么,我们最终该如何修复它呢?我们需要使用单向标记,其中 AI 与 Artificial Intelligence 相同,但 Artificial Intelligence 与 AI **不**相同。

感谢同义词 API,这非常简单。我们可以对现有同义词集进行 PUT 调用来更新它

 

此更改将用 Artificial Intelligence 取代任何提及 AI 的内容。这样,即使提到 AI,Adobe Illustrator 也不会出现。如果我们确实希望它出现,我们可以创建这个同义词:“AI => AI, Artificial Intelligence”。

让我们再分析一下

 
 

ai token 已消失。

现在,让我们检查搜索是否按预期工作

 

Business Intelligence 又来了!但这次,原因不同。默认匹配查询运算符是 OR,两个文档都包含单词 intelligence。如果我们想运行更严格的搜索并确保所有关键字都存在,我们可以使用 match_phrase 或将 operator 参数更改为 AND。

 
 

现在,无论人们如何搜索,我们的 AI 文档都将成为搜索结果中的佼佼者。

最后,让我们清理一下我们创建的索引和同义词集

 

你可以在中阅读有关同义词 API 的更多信息。

同义词是定制搜索体验的强大工具,因此了解可用的配置以获得所需的结果至关重要。同义词 API 允许你快速轻松地创建和更新同义词,而 synchroute_graph 过滤器可让你顺利处理多词同义词。

Elasticsearch 包含许多新功能,可帮助您为您的用例构建最佳搜索解决方案。深入了解我们的以了解更多信息,开始,或立即在你的试用 Elastic。

想要获得 Elastic 认证?了解下一期 何时举行

    以上就是本篇文章【Elasticsearch:用同义词 API 像专家一样处理短语同义词】的全部内容了,欢迎阅览 ! 文章地址:http://www78564.xrbh.cn/quote/28550.html 
     动态      相关文章      文章      同类文章      热门文章      栏目首页      网站地图      返回首页 迅博思语移动站 http://www78564.xrbh.cn/mobile/ , 查看更多