私は 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>