我希望结果在列出其他结果之前先显示完全匹配,并且数据应按 a-z 或 z-a (asc/desc) 排序?
1. Maxwell B
2. Maxwell A
3. D Maxwell
4. C Maxwell
搜索文本: 麦克斯韦如果我搜索文本并按asc
应用顺序,则结果为:
C Maxwell
D Maxwell
Maxwell A
Maxwell B
但是我已经搜索了Maxwell
所以首先应该显示Maxwell
(匹配的结果),然后它应该列出其他的,我想要的是:
Maxwell A
Maxwell B
C Maxwell
D Maxwell
在您给出的示例中,在搜索"麦克斯韦"时,"C 麦克斯韦"和"麦克斯韦 A"具有相同的相似性 - 它们都不是完全完全匹配的,但都完全包含搜索的令牌(麦克斯韦)。
我也不认为排序会有所帮助,因为排序是在文本上完成的,并且仍然没有对其中任何一个的偏好超过另一个,因为两者都包含"Maxwell"和其他文本部分。
您究竟在运行什么查询?更改结果顺序的一种方法是修改结果的分数。您可以在 https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html 中查找一个示例,您可以在其中指定与"Maxwell"匹配的function_score,这可能会有所帮助。