有人可以帮助将以下solr查询转换为java吗?
http://<server>/solr/<core>/select?debugQuery=on&indent=on&q=(_query_:"{!edismax mm='100%25' qf='manu^2.0' v=$q1}")
AND (_query_:"{!edismax mm='100%25' qf='category^2.0' v=$q1}")&q1=galaxy&wt=csv
我需要知道如何将多个子查询设置为查询。
编辑2:为了获得准确的回复,我查询了3次,直到收到回复。
query.setQuery("manu:"+prefix+" AND category:"+prefix);
QueryResponse response = server.query(query);
if (response.getResults().getNumFound() == 0) {
query.setQuery("manu:"+prefix+" OR category:"+prefix);
response = server.query(query);
if (response.getResults().getNumFound() == 0) {
query.setQuery("text:"+prefix);
response = server.query(query);
}
}
但它造成了太多延迟?有没有更好的方法?
答案 0 :(得分:0)
我只是对您的查询进行了一些修改,以使其更简单
q =(类别:$ q1 ^ 2.0 AND manu:$ q1 ^ 2.0)&amp; defType = edismax&amp; q1 = galaxy&amp; wt = csv&amp; fl = manu,category
创建Solrclient对象
String urlString =“http://server:port/solr/core”;
SolrClient solrClient = new HttpSolrClient.Builder(urlString).build();
创建SolrQuery对象,并在该对象上执行这样的查询方法,并设置各种参数
query.set(“q”,“category:galaxy AND manu:galaxy”);
query.set(“qt”,“/ search”);
query.set(“mm”,“100%”);
query.setQueryType( “edismax”);
query.set(“qf”,“category ^ 2.0 manu ^ 2.0”);
QueryResponse response = solrClient.query(query);
您将获得SolrDocumentList列表,您可以在其上迭代并获得结果。
SolrDocumentList list = response.getResults();
请根据您使用的solr版本参考SolrJ Documentation。