一尘不染

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

elasticsearch

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

.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中进行搜索,并随着我现在使用的增强功能进行搜索。


阅读 1150

收藏
2020-06-22

共1个答案

一尘不染

我不知道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方法。

2020-06-22