我正在尝试使用TermsComponent来实现与Solrj的自动提示,但我没有看到如何指定路径(即/terms
的{{1}}部分。)< / p>
如何使用Solrj指定路径?
Bonus:有没有办法为http://localhost:8983/solr/terms
param指定多个字段?
由于
答案 0 :(得分: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”;默认的solrconfig.xml包含它。
奖励:只需为TERMS_FIELD
(或多个网址&terms.fl=foo
参数)添加多个字符串,即可添加多个字段。
谢谢毛里西奥,指出我的方向正确。
答案 1 :(得分:2)
SolrJ 1.4.1中没有对TermsComponent的直接支持,但是看一下corresponding patch,自己很容易实现它。
由于TermsComponent是一个标准组件,您不需要使用/ terms,您可以hook it to the standard query request handler。
答案 2 :(得分:2)
我花了很多时间让TermsComponent发挥作用。
在一天结束时,我意识到您需要调用一组不同的命令才能从&#34; / terms&#34;中检索结果。 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");
我希望将来可以帮助其他人。