当前位置: 首页 > 面试题库 >

Elasticsearch / Nest-将MatchPhrase与OnFieldsWithBoost结合使用

孙阳旭
2023-03-14
问题内容

在今天的代码中,我正在执行以下搜索:

.Query(q => q.QueryString(qs => qs.Query(searchQuery).OnFieldsWithBoost(f => f.Add(b => b.MetaTitle, 5).Add(b => b.RawText, 1))))

我的问题是,如果我搜索类似的短语,这将使我进行非常广泛的搜索。“太阳普照”。我试过在RawText而不是QueryString上使用MatchPhrase,这有点奏效。

问题是我仍然想同时在MetaTitle和RawText中进行搜索,并随着我现在使用的增强功能进行搜索。


问题答案:

我不知道Nest,但是您想要做的是使用具有字段boost

的短语类型的多匹配查询。

在g ** gle上进行的快速搜索为boost部分提供了如下语法:

.Query(q => q
    .MultiMatch(m => m
        .OnFieldsWithBoost(b => b
            .Add(o => o.MyField, 2.0)
            .Add(o => o.AnotherField, 3.0)
        )
        .Type(TextQueryType.Phrase)
        .Query("my query text")
    )
)

API必须具有某种类型的type参数才能向其中添加phrase类型。

编辑 :快速浏览源代码后,我发现了上面添加的Type方法。



 类似资料:
  • 问题内容: 我想将Reactsearch与我自己的普通香草elasticsearch集群一起使用。尽管示例和文档描述这应该 可行:ReactiveBase,请参见 Param. 我收到连接错误和一个Websocket调用 看起来像是 试图连接到 托管弹性体。它还会传递凭证代码以及对我的代码中未指定的对elastic的调用。 是否可以连接到普通弹性件?在哪里可以找到有关此方法的 文档? 这是我的定义

  • 问题内容: 我们正计划将Elasticsearch集群移至Amazon ElasticSearch Service(AES)。我们当前的代码库使用本机Java传输客户端与ElasticSearch集群进行交互,但是根据AES文档,它不支持TCP传输。 想知道几件事: 想知道是否仍然如此。我之所以这样问是因为开发人员指南版本看起来有些旧,版本为“开发人员指南(API版本 2015-01-01 )”。

  • 问题内容: 我尝试将所有日志存储在哨兵实例中。相应于此线程,我尝试了以下操作: 将哨兵附加程序添加到loggin.yml: 和复制,并以ES / lib文件夹。启动过程中没有错误,但哨兵没有记录,即使在控制台上也有警告消息。ES的版本是2.1.0。 我想念什么吗? 问题答案: 这是有效的解决方案(适用于ES 2.4.4): 添加下面的库文件夹ES的:,,, 更新: 重新启动ES实例

  • 问题内容: 我在SO上发现了其他几个有关JavaMail API和通过SMTP服务器发送邮件的问题,但是没有一个使用TLS安全性进行讨论。我正在尝试使用JavaMail通过我的工作SMTP邮件服务器向我发送状态更新,但是它需要TLS,而且我在网上找不到任何有关如何使用JavaMail访问需要TLS加密的SMTP服务器的示例。有人能帮忙吗? 问题答案: 实际上,我们的产品中确实有一些通知代码,如果有

  • 我已经阅读了一些关于SaaS/PaaS/IaaS的信息,我在想: 如果我提供了一个SaaS应用程序,我的客户能否使用PaaS开发和部署他自己的应用程序,PaaS将使用一些API与我的SaaS应用程序交互?还是我对云服务的理解有误?

  • 问题内容: 我在让NEST的DeleteByQuery方法工作时遇到了一些困难。 很简单,查询永远找不到要删除的内容,我也不知道为什么。我正在使用相同的查询来返回记录(使用搜索),并且一切正常。 我只是刚刚开始使用NEST,所以我确定这是一个非常简单的问题,而且我有点昏暗! 任何帮助/建议,不胜感激。 问题答案: 的是上的.NET方法支票是否相等。 如果您更改对它的呼叫,则应该可以使用。