solrj为不同的查询返回相同的结果

时间:2017-11-10 15:04:18

标签: solr solrj

这是我的代码: -

    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中提取的一样。对于所有类型的查询,输出保持不变。我哪里错了?

1 个答案:

答案 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==\")"));