我正在编写自己的请求处理程序。 从“q”
获取用户输入后String q = params.get(CommonParams.Q);
我想使用group子句构建复杂查询:
示例:
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会是我创建的查询字符串吗?
在我们创建查询后,我们如何实际执行搜索?
答案 0 :(得分:1)
我没有深入了解这些链接,但请检查它是否为您的Q提供任何线索。
答案 1 :(得分:0)
我没有编写RequestHandler的经验,我不知道它有多难。
如果您的要求是在现有查询中添加更多过滤器,我认为编写SearchComponent很容易。
您可以编写一个扩展SearchComponent的CustomComponent。在该Custom组件中,您可以覆盖prepare方法,如下所示:
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>