Elasticsearch 对具有部分边缘 ngram 补全的数组字段的搜索建议

2024-04-07

我正在尝试根据文档中的字符串数组构建一个建议器,它类似于this one https://stackoverflow.com/questions/20789224/elasticsearch-autocomplete-search-on-array-field但有几个区别:completion suggester来自 Elasticsearch 的功能并不完全符合我的要求(在过滤和前缀匹配方面),因为我需要一个边缘 ngram,它可以作用于句子中的任何单词,且不区分重音。让我用一个例子来澄清。

假设我有以下索引文档。我想根据查询建议“标签”q(我不关心文档本身,只关心tag与我的查询相匹配)

[
  { "tags": [ "société générale", "consulting" ] },
  { "tags": [ "big data", "big", "data"] },
  { "tags": [ "data" ] },
  { "tags": [ "data engineering" ] }
  { "tags": [ "consulting and management of IT" ] }
]

我想将前缀与重音容差相匹配,以下查询/响应突出显示了我需要的内容

  • (1) q = "societe" or q = "societe generale"应该返回[ "société générale" ]--> 不区分重音
  • (2) q = "big data"应该返回[ "big data" ]--> 前缀“big”和“data”必须在字符串中
  • (3) q = "data"应该返回[ "big data", "data", "data engineering" ],--> 句子中的任何位置(但作为前缀)
  • (4) q = "ata"不应返回任何内容(不是前缀)
  • (5) q = "IT consulting"应该返回[ "consulting and management of IT" ]--> 的两个前缀q无论顺序如何都应该匹配

如果我使用常规的completion映射器+建议器,

# assuming a mapping of "tags", of type 'completion' is configured in my ES
{
  suggest: {
    text: "big data",
    tags: {
      completion: {
        field: "tags",
      },
    },

除了 (2)、(4) 和 (3) 的 1/3 结果之外,这些情况几乎都不起作用

我可以构建一个自定义建议器或自定义搜索查询来满足我的要求和上面给出的示例吗?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elasticsearch 对具有部分边缘 ngram 补全的数组字段的搜索建议 的相关文章

随机推荐

  • 我在Excel中有3个时间段 - 我需要知道最长连续时间段的持续时间

    请帮忙 理想情况下 我真的很想仅使用公式来解决这个问题 而不是 VBA 或任何我认为 花哨 的东西 我所工作的项目为持续参与提供奖金 我们有三个 有时更多 参与时间段 这些时间段可能会重叠和 或可能有没有参与的空间 神奇的数字是 84 天的
  • 如何在另一个线程中设置文本视图的文本

    我试图在另一个线程 即子线程 中设置文本 但对于以下代码 它给出了错误 只有创建视图层次结构的原始线程才能触摸其视图 public void onCreate Bundle savedInstanceState super onCreate
  • 为什么 eclipse 无法正确部署我的动态 Web 项目?

    问题是 我在源代码控制下有一个 java 动态 Web 项目 并在我的 Eclipse 工作区中检出 之前 我能够从 eclipse 中在本地 Tomcat 服务器上运行 servlet 但是 我进行了一些更改 删除了一些文件并添加了一些新
  • 如何在 JavaScript 中旋转图像?

    我想在单击打开按钮时旋转风扇图像 单击关闭按钮 旋转停止 我的代码是 img src fan png width 200 br
  • Android 支持库 ActionBar NullPointerException 版本 2.2(级别 8) - 与preferences.xml冲突

    我正在使用 v7 支持库在 Android 2 x 上显示 ActionBar 当我将应用程序部署到 IDE Intellij IDEA 中的设备时 应用程序运行正常 当我使用 maven 构建并打包要部署到 Play 商店的应用程序时 我
  • 在 IPython Notebook 之间共享数据

    如果我有多个 IPython 笔记本在同一台服务器上运行 有什么办法可以在它们之间共享数据吗 例如 从另一个笔记本导入变量 谢谢 这对我有用 store 命令允许您在两个不同的之间传递变量 笔记本 data 这是我想要传递到不同笔记本的字符
  • DateTimePicker 控件不显示 AM/PM

    我在使用自定义格式 其中包括两个字母的 A M P M 的 DateTimePicker 控件时遇到问题 缩写 使用 en US CultureInfo DateTimeFormat ShortTimePattern 会导致 时 嗯tt 但
  • Python 运行守护进程子进程并读取标准输出

    我需要运行一个程序并将其输出收集到标准输出 该程序 socat 需要在 python 脚本运行期间在后台运行 Socat 一旦运行就会处于守护进程模式 但首先它会将一些行输出到标准输出 我的脚本的其余部分需要这些行 命令 socat d d
  • 如何访问证书扩展(信息)值?

    我有一个由变量访问的 X509Certificate 当我尝试获取证书的详细信息时 我设法通过提供的函数轻松获取 CriticalExtensions 值 但是我想要达到的是存储在证书中并由对象 ID 2 5 29 32 表示的非关键扩展
  • 在 Windows Server 2019 Core 中强制安装不兼容的 .inf 驱动程序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试在我的第六代 NUC 上安装 Server 2019 Core 尽管安装进展顺利 但当它在没有任何网络连接的情况下启动时 我想起
  • 用 C 处理 TCP 的部分返回

    我一直在读Beej 的网络编程指南 http beej us guide bgnet 获取 TCP 连接的句柄 在其中一个示例中 简单 TCP 流客户端的客户端代码如下所示 if numbytes recv sockfd buf MAXDA
  • 如何序列化和反序列化 JavaScript 对象?

    我需要序列化和反序列化 JavaScript 对象以将它们存储在数据库中 请注意 这些对象包含函数 因此我无法将它们存储为 JSON 因此无法使用 json2 js JavaScript 对象 当然是 JavaScript 的 反 序列化的
  • 在jmeter中设置整个请求url

    我有一个请求 它提供上传网址作为响应正文 uploadUrl https test com 9000 sample uploadurl I m able to extract the uploadUrl using JSON extract
  • Neo4j 中的自动增量

    有没有办法像在 Neo4j 的 MySQL 中一样设置 auto increment 例如 当我使用 GraphDatabaseService 对象创建节点时 我希望节点以 1000000000 等数字开头 非常感谢 看看这个答案 我可以在
  • 从 XSD 生成 Ruby 类

    有没有办法从 XSD 生成 Ruby 类 甚至可能是 ActiveResource 类 以便它们包含将类序列化为对初始 XSD 有效的 xml 的方法 我知道soap4r有xsd2ruby 但似乎生成的ruby类无法轻松序列化为xml 无耻
  • Android:滚动后 RecyclerView 内容混乱[关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我使用 RecyclerView 来显示标记列表 并且值的每个标记都显示为 CardView 但是在RecyclerVi
  • Google 地图 v3 与 MeteorJS 加载同步问题

    我的应用程序在 MeteorJS 框架上运行并使用谷歌地图 javascript api v3 谷歌地图加载方案类似于此中解释的方案post https stackoverflow com a 16797219 942899 和官方的很相似
  • 如何创建 .chartForegroundStyleScale 的动态输入

    在 Swift Charts 中 签名为chartForegroundStyleScale为每个数据系列设置 ShapeStyle 的方法是 func chartForegroundStyleScale
  • 如何在Jenkins中设置环境变量?

    我希望能够做类似的事情 AOEU echo aoeu 并让詹金斯设置AOEU aoeu The 环境变量詹金斯的部分没有这样做 相反 它设置AOEU echo aoeu 如何让 Jenkins 评估 shell 命令并将输出分配给环境变量
  • Elasticsearch 对具有部分边缘 ngram 补全的数组字段的搜索建议

    我正在尝试根据文档中的字符串数组构建一个建议器 它类似于this one https stackoverflow com questions 20789224 elasticsearch autocomplete search on arr