【发布时间】:2016-03-31 08:14:05
【问题描述】:
我应该使用什么方法来让我的查询从输入短语的文本中返回至少包含 2 个关键字的命中。
例如,如果输入“hellofriend”,我希望返回结果包含“hello”和“friend”的文档文中某处。如果输入“hello good friend”,我想要文本中 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)
)
)
);
我想我错过了什么。请帮忙。
提前致谢。
【问题讨论】:
标签: elasticsearch nest elasticsearch-net