1

我正在尝试从 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") 但这似乎已被弃用。

有任何想法吗?

谢谢

4

1 回答 1

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());
于 2013-11-10T19:09:39.483 回答