如何在 Nest for Elasticsearch 中添加完整的短语标记器?

2023-12-14

当我使用构面创建搜索时,我希望构面结果出现在整个短语上,而不是单个单词上。我希望它不区分大小写 - 就像“not_analyzed”那样。

例如,如果我有一个音乐 json 对象,并且想要根据流派组织分面结果,我希望将每种流派视为整个流派术语(节奏和布鲁斯),而不是“节奏”的一个方面和“布鲁斯”的一个方面',我希望能够搜索“节奏和布鲁斯”并使其与“节奏和布鲁斯”匹配(注意情况)。

看来elasticsearch文档建议使用分词器和小写过滤器的自定义分析器。

这是我提到的来自elasticsearch的建议:(页中)http://www.elasticsearch.org/blog/starts-with-phrase-matching/

我希望能够这样说(在我的 POCO 中以伪代码表示):

[ElasticProperty(Analyzer = "tokenizer, lowercase"]
public string Genre { get; set; }

Use the 多领域输入您的映射。这样做将允许您以两种方式对 Genre 字段进行索引:analyzed(使用标准或小写分析器)用于执行搜索,not_analyzed 用于分面。

对于像这样的更高级的映射,NEST 中基于属性的映射将无法解决问题。您必须使用 Fluent API,例如:

client.CreatIndex("songs", c => c
.AddMapping<Song>(m => m
    .MapFromAttributes()
    .Properties(props => props
        .MultiField(mf => mf
            .Name(s => s.Genre)
            .Fields(f => f
                .String(s => s.Name(o => o.Genre).Analyzer("standard"))
                .String(s => s.Name(o => o.Genre.Suffix("raw")).Index(FieldIndexOption.not_analyzed)))))));

希望这可以帮助!

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

如何在 Nest for Elasticsearch 中添加完整的短语标记器? 的相关文章

随机推荐

  • 似乎无法通过 cURL 获取网页内容 - 用户代理和 HTTP 标头均已设置?

    由于某种原因 我似乎无法通过 cURL 获取此特定网页的内容 我已经设法使用 cURL 很好地访问 顶级页面 内容 但相同的自建快速 cURL 功能似乎不适用于链接的子网页之一 顶级页面 http www deindeal ch 子页面 h
  • C++ - stringstream <<“覆盖”

    我正在用 C 制作 OpenGL 游戏 与其他语言相比 我对 C 相当缺乏经验 不管怎样 我为一些图像创建了一个带有 base 目录的字符串流 然后我将此字符串流作为函数参数传递给构造函数 构造函数附加图像文件名 然后尝试加载结果路径 然而
  • 用 NodeJS 编写的简单 TCP 服务器中的 socket.emit?

    正如你将看到的 我不太了解 TCP 服务器和客户端的基本概念 可能 socket emit 甚至不可能 但我想知道最好的替代方案或类似的东西 Socket io 有一个漂亮的东西可以发出事件并在另一端捕获它们 它位于它的首页 http so
  • Azure Function:部署后旧代码仍在运行

    现在 我再次面临这样的问题 即使通过 KUDU 的 zip 部署返回成功后 旧代码仍在 Azure Function App 上使用 当然 我预计新代码会在大约 30 分钟后加载 而不是立即加载 问题被标记为关闭 在这种情况下 最佳实践是什
  • 二维叉积定义

    In 判断线段是否在多边形内部我注意到接受的答案有一个不寻常的二维叉积定义 u1 u2 x v1 v2 u1 v2 u2 v1 我从未遇到过像这样的二维叉积的定义 谁能告诉我这个定义的出处 不是数学专家 但交叉积ND被定义为操作N 1向量产
  • 零大小数组分配的作用/含义是什么?

    查看一些示例代码并遇到一些零大小数组分配 我创建了以下代码片段来澄清我的问题 这是有效的代码 class T int main void T ptr new T 0 return 0 它有什么用 ptr 有效吗 这个结构可移植吗 C 标准中
  • 限制 NSArray 中的重复条目

    我有一个数组 其中包含一些重复的条目 首先 有什么办法可以限制插入数据时的重复条目吗 其次 如果一个数组已经具有比其他方式重复的值 我们只能从该数组中检索唯一的值 我听说过 NSSet 但我不知道如何使用它 不要使用 NSSet 您只能在创
  • 卡夫卡流 RoundRobinPartitioner

    我编写了一个kafka流代码 使用kafka 2 4 kafka客户端版本和kafka 2 2服务器版本 我的主题和内部主题有 50 个分区 我的 kafka 流代码具有 selectKey DSL 操作 并且我有 200 万条使用相同 K
  • 如何检查一个 div 是否包含另一个 div?

    如果我的父 div 有一个仅使用 JavaScript 的子 div 我需要显示警报 而不使用 jQuery 我尝试过使用contains 函数来检查我的 div 并发送警报 但它不起作用 div class ro div
  • 如何在c#中将数据表绑定到datagridview

    我需要绑定我的数据表 to my 数据网格视图 我这样做 DTable new DataTable SBind new BindingSource ServersTable DataGridView for int i 0 i lt Ser
  • 在数组上的过滤方法之后指定所需的类型

    我想在两个数组之间进行分离 在一个数组中 对象没有特定的值 另一方面 它应该有一个字符串 interface Relation
  • NodeList 上的 addEventListener [重复]

    这个问题在这里已经有答案了 NodeList是否支持addEventListener 如果不是 将 EventListener 添加到 NodeList 的所有节点的最佳方法是什么 目前我正在使用如下所示的代码片段 是否有更好的方法来做到这
  • mysql:获取两个日期时间之间的记录计数

    我在 MySQL 中遇到了一个问题 我想获取两个日期时间条目之间的记录数 例如 我的表中有一个名为 created 的列 其中包含datetime数据类型 我想计算在 今天凌晨 4 30 和 当前日期时间 之间创建的日期时间记录 我尝试了
  • 如何在多线程中取消DefaultHttpClient执行过程

    我正在开发一个非常依赖互联网的Android应用程序 我经常使用它检索数据RestClient类 其中包含有关使用 DefaultHttpClient 执行网络请求的一些详细信息 我总是使用不同的线程来执行 HTTP 请求 我创建一个这样的
  • 如何解决C和Python混合编程时的“分段错误”?

    在我的Ubuntu下 猫测试 py Filename test py def Hello print Hello world 猫汤姆 cpp include
  • CSS中如何让文本围绕不规则形状流动

    我正在尝试弄清楚如何让文本围绕页面上的不规则形状流动 但我不太幸运地弄清楚如何做我想做的事情 我附上了一张显示我正在尝试使用的布局的图像 我希望文本像图像中那样流畅 我在 MS Paint 中做了这个模型 每个页面上都可以有任何内容 所以我
  • 如何使我的 Blazor 服务器端应用程序 IIS 8.5 保持活动状态

    我需要让我的 blazor 服务器端应用程序始终保持活动状态 我尝试将 iis 8 5 启动模式设置设置为 alwaysrunning 并将 idle 设置为 0 但仍然关闭应用程序并捕获停止信号 在 23 点到 29 点之间 我必须做什么
  • 使用从kernel32.dll导入的SetThreadAffinityMask函数

    我正在尝试使用设置线程亲和力SetThreadAffinityMask在我的 C 代码中从 kernel32 dll 导入的函数 这就是我导入它的方式 DllImport kernel32 dll static extern IntPtr
  • 从“原型”和“新”转向封闭和暴露模式

    我一直在重构别人的 JavaScript 代码 BEFORE function SomeObj flag var private true this flag flag true false this version 1 1 prototy
  • 如何在 Nest for Elasticsearch 中添加完整的短语标记器?

    当我使用构面创建搜索时 我希望构面结果出现在整个短语上 而不是单个单词上 我希望它不区分大小写 就像 not analyzed 那样 例如 如果我有一个音乐 json 对象 并且想要根据流派组织分面结果 我希望将每种流派视为整个流派术语 节