这是我的代码: -
SolrClient client = new HttpSolrClient.Builder("http://arlmsendeavour01:8983/solr/ImageMatch").build();
SolrQuery query = new SolrQuery();
query.setRequestHandler("/select");
//System.currentTimeMillis();
String q = "{!cache=false}*:*&debugQuery=true&sort=lirefunc(eh,\"opKg0dKEtZOSsaSBkfPChsTEopGykqHExYTEw5GylbKx8KKXkqHRww==\")+asc";
query.setQuery("q");
QueryResponse response = null;
try {
response = client.query(query);
} catch (SolrServerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
SolrDocumentList results = response.getResults();
for (int i = 0; i < results.size(); ++i) {
System.out.println(results.get(i)/*.getFieldValue("id")*/);
}
我正在使用函数查询lirefunc,其中第一个参数定义它是颜色还是边缘或纹理,第二个参数是图像中提取的特征。每次我运行甚至是不同图像和不同功能的代码时,我都会得到相同的输出,就好像它是从solr xml中提取的一样。对于所有类型的查询,输出保持不变。我哪里错了?
答案 0 :(得分:0)
query.setQuery("q");
- 这会将查询设置为字符串"q"
。我确定这不是你的意思。
setQuery
方法也不用于设置查询字符串 - 它用于将q
参数(查询)中存在的任何内容设置为Solr。
有separate methods for each part of the request to Solr in SolrJ。
要设置sort=
参数,请使用addSort:
query.addSort(SortClause.desc("lirefunc(eh,\"opKg0dKEtZOSsaSBkfPChsTEopGykqHExYTEw5GylbKx8KKXkqHRww==\")"));