4

TermsComponentを使用してSolrj でautosuggest/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);

これは、TermsComponent が「/terms」に配線されていることを前提としています。デフォルトの solrconfig.xml にはそれがあります。

TERMS_FIELDさらに、複数の文字列(または複数の URLパラメータ)を追加するだけで、複数のフィールドを追加できます&terms.fl=foo

私を正しい方向に向けてくれてありがとう、マウリシオ。

于 2011-02-22T23:59:43.823 に答える
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 に答える
2

TermsComponent の直接サポートは SolrJ 1.4.1 では利用できませんが、対応する patchを見てください。自分で実装するのは非常に簡単です。

TermsComponent は /terms を使用する必要のない標準コンポーネントであるため、標準のクエリ リクエスト ハンドラにフックすることができます。

于 2011-02-22T23:15:34.043 に答える