我正在尝试使用TermsComponent来实现 Solrj 的自动建议,但我看不到如何指定路径(即 的/terms
部分http://localhost:8983/solr/terms
)。
如何使用 Solrj 指定路径?
奖励:有没有办法为terms.fl
参数指定多个字段?
谢谢
我正在尝试使用TermsComponent来实现 Solrj 的自动建议,但我看不到如何指定路径(即 的/terms
部分http://localhost:8983/solr/terms
)。
如何使用 Solrj 指定路径?
奖励:有没有办法为terms.fl
参数指定多个字段?
谢谢
开始了:
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
参数)来添加多个字段。
谢谢毛里西奥,为我指明了正确的方向。
SolrJ 1.4.1 中不提供对 TermsComponent 的直接支持,但是看一下相应的补丁,自己实现很容易。
由于 TermsComponent 是您不需要使用 /terms 的标准组件,您可以将其挂接到标准查询请求处理程序。
我花了很多时间来使 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");
我希望这可以在未来对其他人有所帮助。