4

我正在尝试使用TermsComponent来实现 Solrj 的自动建议,但我看不到如何指定路径(即 的/terms部分http://localhost:8983/solr/terms)。

如何使用 Solrj 指定路径?

奖励:有没有办法为terms.fl参数指定多个字段?

谢谢

4

3 回答 3

4

开始了:

    SolrQuery query = new SolrQuery();
    query.setParam(CommonParams.QT, "/terms");
    query.setParam(TermsParams.TERMS, true);
    query.setParam(TermsParams.TERMS_LIMIT, "10");
    query.setParam(TermsParams.TERMS_FIELD, "title", "description");  // or whatever fields you want
    query.setParam(TermsParams.TERMS_PREFIX_STR, typedInput);

这是假设您在“/terms”处连接了TermsComponent;默认的 solrconfig.xml 有它。

还有额外的好处:您可以通过添加多个字符串TERMS_FIELD(或多个 URL&terms.fl=foo参数)来添加多个字段。

谢谢毛里西奥,为我指明了正确的方向。

于 2011-02-22T23:59:43.823 回答
2

SolrJ 1.4.1 中不提供对 TermsComponent 的直接支持,但是看一下相应的补丁,自己实现很容易。

由于 TermsComponent 是您不需要使用 /terms 的标准组件,您可以将其挂接到标准查询请求处理程序

于 2011-02-22T23:15:34.043 回答
2

我花了很多时间来使 TermsComponent 工作。

一天结束时,我意识到需要调用一组不同的命令才能从“/terms”requestHandler 中检索结果。

我试图使用

HttpSolrServer server = new HttpSolrServ(solrUrl);
List<SolrDocument> list = server.query(query).getResults()

但是,从 TermsComponent 获取结果的正确方法是

HttpSolrServer server = new HttpSolrServ(solrUrl);
TermsResponse termResp = server.query(query).getTermsResponse();
List<Term> tList = termResp.getTerms("fieldNAME");

我希望这可以在未来对其他人有所帮助。

于 2013-04-16T12:59:50.450 回答