Elasticsearch/Nest - 使用MatchPhrase和OnFieldsWithBoost

Jac*_*cob 4 c# elasticsearch nest

在我今天的代码中,我正在进行如下搜索:

.Query(q => q.QueryString(qs => qs.Query(searchQuery).OnFieldsWithBoost(f => f.Add(b => b.MetaTitle, 5).Add(b => b.RawText, 1))))
Run Code Online (Sandbox Code Playgroud)

我的问题是,如果我搜索一个类似的短语,这给了我一个非常广泛的搜索."艳阳高照".我尝试在RawText上使用MatchPhrase而不是QueryString,这种方法有用.

问题是我仍然想要在MetaTitle和RawText中搜索并使用我正在使用的提升.

Tho*_*asC 6

我不知道Nest,但你想要做的是使用短语类型多匹配查询,并增加字段.

对g**gle的快速搜索为我提供了类似这样的语法:

.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")
    )
)
Run Code Online (Sandbox Code Playgroud)

API必须具有某种type参数才能将phrase类型添加到此.

编辑:在快速查看源代码后,我找到了一个Type方法,上面添加了.