2

私は自分のリクエストハンドラーを書いています。「q」からユーザー入力を取得した後

String q = params.get(CommonParams.Q);

グループ句を使用して複雑なクエリを作成したい:

例:

foo&group.truncate=true&group.ngroups=true&group.field=id&group.sort=date desc&version=2.2&start=0&rows=10&indent=on

私は彼らが次のことをしているオンラインの例を見ています:

クエリ query1 = new TermQuery(new Term(q));

この場合、q は私が作成するクエリ文字列でしょうか?

クエリを作成した後、実際に検索を実行するにはどうすればよいでしょうか。

4

2 に答える 2

1

これらのリンクについては詳しく説明していませんが、Q.

于 2013-03-29T04:53:49.203 に答える
0

私は RequestHandler を書いた経験がなく、それがどれほど難しいかわかりません。

要件が既存のクエリにさらにフィルターを追加することである場合、SearchComponent を作成するのは簡単だと思います。

SearchComponent を拡張する CustomComponent を作成できます。そのカスタム コンポーネントでは、次のように準備メソッドをオーバーライドできます。

public void prepare(ResponseBuilder responseBuilder) throws IOException {
 BooleanFilter booleanFilter = new BooleanFilter();
 TermsFilter termFilter = new TermsFilter(new Term("name", value));
 booleanFilter.add(new FilterClause(termFilter, Occur.MUST));
 /*
   Create a filtered Query with the with the filter created and the actual query
  */
 FilteredQuery query = new FilteredQuery(responseBuilder.getQuery(),booleanFilter);
 // Set the new query into the response builder.
 responseBuilder.setQuery(query);
}

検索コンポーネントの準備ができたら、次のように solrConfig.xml で searchComponent を作成できます。

 <searchComponent name="customComponent" class="com.CustomComponent">
<lst name="parameterName">
    <str name="key">value</str>
</lst>
  </searchComponent>

次に、これを既存のリクエストハンドラーの最後のコンポーネントとして追加できます

<arr name="last-components">
  <str>customComponent</str>
   <str>spellcheck</str>
 </arr>
于 2013-03-28T21:42:22.377 に答える