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();
我正在使用以下搜索查询:
{ "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();