这是我的代码:-
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 中提取的一样。对于所有类型的查询,输出保持不变。我哪里错了?
query.setQuery("q");
- 这将查询设置为字符串"q"
。我确定这不是你想要做的。
该setQuery
方法也不用于设置查询字符串 - 它用于将q
参数(查询)中存在的任何内容设置为 Solr。
SolrJ 中对 Solr 的请求的每个部分都有单独的方法。
要设置sort=
参数,请使用addSort:
query.addSort(SortClause.desc("lirefunc(eh,\"opKg0dKEtZOSsaSBkfPChsTEopGykqHExYTEw5GylbKx8KKXkqHRww==\")"));
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句