solrj QueryResponse getTermsResponse返回null

时间:2013-10-14 02:20:11

标签: json scala solrj word-frequency

我正在尝试从solrj QueryResponse对象获取TermsResponse对象,但它似乎没有工作。我正在使用scala,但我也很高兴看到一个有效的java示例。

首先,我设置了术语矢量查询,它看起来有效:

val solrurl = "http://localhost:8983/solr"
val server= new HttpSolrServer( solrurl )
val query = new SolrQuery
query.setRequestHandler("/tvrh")
query.set("fl", "text")
query.set("tv.all", true)
query.setQuery("uid:" + id)
val response = server.query(query)

该查询返回一个QueryResponse对象,其toString看起来是一个JSON对象。该对象包括术语矢量信息(术语,频率等)作为JSON对象的一部分。

但是当我这样做时,我总是得到一个空对象:

val termsResponse = Option(response.getTermsResponse)

此功能是否已弃用?

如果是这样,从QueryResponse检索结构的最佳方法是什么?转换为JSON?其他一些消息来源指向使用response.get(“termVector”),但这似乎已被弃用。

有什么想法吗?

由于

1 个答案:

答案 0 :(得分:2)

我一直在使用简单的java对象,具有以下配置。

    //Adding terms for 2 word phrases
    qterms.setTerms(true);
    qterms.setRequestHandler("/terms");
    qterms.setTermsLimit(20);
    qterms.addTermsField("PhraseIndx2");
    qterms.setTermsMinCount(20);

    QueryResponse response = solr.query(query);
    SolrDocumentList results = response.getResults();

    //queryresponse get all terms from in 2 phrase field
    System.out.println ("printing the terms from queryresponse: \n");
    QueryResponse resTerms = solr.query(qterms);
    TermsResponse termResp =resTerms.getTermsResponse();
    List<Term> terms = termResp.getTerms("PhraseIndx2");
    System.out.print(terms.size());