Elastic search Query String java api 对所有结果给出相同的分数

Elastic search Query String java api gives same score to all the results

我正在使用以下搜索查询:

{ "from": "0", "size": "20", "query": {"query_string": {"fields": ["title"],"query" : "seller*", "analyze_wildcard": 真}}}

这个 curl 以正确的分数打 returns 我 hits/results,而我正在通过 elasticsearch 传输客户端尝试同样的事情,例如:

String queryString = "{" 
           + "\"query_string\" : {\n" + 
           "       \"fields\" : [\"title\"],\n" + 
           "       \"query\" : "+ "\"" + searchQuery  + "\",\n" + 
           "       \"analyze_wildcard\": true \n" + 
           "   }}\n";

SearchResponse response2 = client.prepareSearch(indexName).setTypes(successZoneTypeName).setFrom(0).setSize(30).setQuery(QueryBuilders.queryStringQuery(queryString)).get();

这个returns所有命中得分相同的结果。

即使我尝试使用 jest client 结果也是一样,我没有得到正确的分数。

这不是通过 Java 构造查询字符串查询的正确方法。你应该这样做:

QueryBuilder qs = QueryBuilders.queryStringQuery("\"" + searchQuery  + "\"")
   .field("title")
   .analyzeWildcard(true);

SearchResponse response2 = client.prepareSearch(indexName)
   .setTypes(successZoneTypeName)
   .setFrom(0)
   .setSize(30)
   .setQuery(qs)
   .get();