Solrj:如何指定路径

时间:2011-02-22 20:33:18

标签: autocomplete solr autosuggest solrj

我正在尝试使用TermsComponent来实现与Solrj的自动提示,但我没有看到如何指定路径(即/terms的{​​{1}}部分。)< / p>

如何使用Solrj指定路径?

Bonus:有没有办法为http://localhost:8983/solr/terms param指定多个字段?

由于

3 个答案:

答案 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");

我希望将来可以帮助其他人。