我应该使用什么方法来让我的查询从输入短语的文本中返回至少包含 2 个关键字的命中。
例如,如果输入“你好朋友”,我希望返回结果包含文本中某处“你好”和“朋友”的文档。如果输入“你好,好朋友”,我想要文本中 3 个关键字中的 2 个的结果。或者至少具有最佳组合的结果排在首位。如果我使用下面这样的代码,我会得到“你好”或“朋友”但不是两者都有的结果。
var searchResults = client.Search<Thread>(s => s
.Type("threads")
.From(0)
.Size(100)
.Query(q => q
.Match(qs => qs
.OnField(p => p.Posttext)
.Query("hello friend")
)
)
.Highlight(h => h
.OnFields(
f => f.OnField("posttext").PreTags("<b>").PostTags("</b>").FragmentSize(150)
)
)
);
我可以通过像这样的代码得到我想要的结果,但它不灵活,因为短语可以包含任意数量的单词。
var searchResults = client.Search<Thread>(s => s
.Type("threads")
.From(0)
.Size(100)
.Query(q => q
.Match(qs => qs
.OnField(p => p.Posttext)
.Query("hello")
)
&&
q.Match(qs => qs
.OnField(p => p.Posttext)
.Query("friend")
)
)
.Highlight(h => h
.OnFields(
f => f.OnField("posttext").PreTags("<b>").PostTags("</b>").FragmentSize(150)
)
)
);
我想我错过了一些东西。请帮忙。
提前致谢。