Solr / SolrJ版本:6.0.0

我已经在solrconfig.xml中设置了termvector组件,并且请求处理程序是“ / tvrh”,我在浏览器中对其进行了测试,并且可以正常工作。现在,我想在solrJ中使用它,但是它只返回文档。以下是我的代码:

    SolrClient solrClient = new HttpSolrClient("http://localhost:8983/solr/test");
    SolrQuery solrQuery = new SolrQuery();
    solrQuery.setQuery(String.format("id:%s","clueweb12-0000tw-06-17744"));
    solrQuery.setRequestHandler("/tvrh");
    solrQuery.set("tv", true);
    solrQuery.set("tv.all", true);

    QueryResponse response = solrClient.query(solrQuery);
    SolrDocumentList docs = response.getResults();

    for (SolrDocument doc: docs){
        for (String key: doc.keySet()){
            System.out.println(key);
            System.out.println(doc.getFieldValue(key));
        }
    }

最佳答案

您的问题是如何在solr中使用非标准请求处理程序。

请注意,术语向量组件属于“非标准”请求处理程序,solrj不支持它:
https://cwiki.apache.org/confluence/display/solr/The+Term+Vector+Component#TheTermVectorComponent-SolrJandtheTermVectorComponent

您可以在普通模式下通过solrj调用“ / tvrh”。您不能为此使用SolrClient#query(SolrParams params)方法,因为在这种情况下,“请求处理程序”仅作为“ qt”参数发送,并且不会成为url路径的一部分(而qt参数为默认情况下忽略)。

因此,请改用方法“ SolrClient#request”。

09-26 23:37