我想设置一个简单的搜索,通过自定义排序返回简单的结果,我根据自定义分数得到的订单很好。
问题在于此查询
"query": {
"query_string": {
"query": query_term,
"fields": ["name_auto"],
}
}
注意:name_auto是弹性的边缘N克字段
如果查询没有任何意义,我总是得到一个结果集。
示例:
我有一个弹性填充索引,其中填充了所有Android应用程序的名称。 如果我搜索 face ,我会回复所有与游戏商店评论相关的结果,menans [facebook,facebook messenger,...]
问题在于,当我查询类似 facesomeuselesschars 之类的东西时,我仍然会得到与以前相同的结果,但确定没有任何东西可以匹配“someuselesschars”。
任何人都可以提供帮助吗
答案 0 :(得分:2)
ElasticSearch将始终返回与您的查询匹配的结果,即使这些结果的得分较差。您对'facesomeuselesschars'的查询将匹配因为您的ngrams而在其中包含'face'的任何内容(例如,您的查询的前四个字符将匹配索引中的多个标记)。
查询中的其余字符只会降低返回匹配的分数,但不会阻止它返回。
如果您想设置结果必须达到的最低分数,可以使用min_score参数。