실제로 두 가지 방법으로이 매개 변수를 추가 할 수 있습니다.
쿼리는 QueryParser
을 사용하여 solr 형식으로 변환되므로 수정 된 것을 등록 할 수 있습니다.
이
final Query query = //...whatever query you have.
List<DomainType> result = solrTemplate.execute(new SolrCallback<List<DomainType>>() {
@Override
public List<DomainType> doInSolr(SolrServer solrServer) throws SolrServerException, IOException {
SolrQuery solrQuery = new QueryParsers().getForClass(query.getClass()).constructSolrQuery(query);
//add missing params
solrQuery.set(GroupParams.GROUP_TOTAL_COUNT, true);
return solrTemplate.convertQueryResponseToBeans(solrServer.query(solrQuery), DomainType.class);
}
});
open an issue 주시기 바랍니다 :
QueryParser modifiedParser = new DefaultQueryParser() {
@Override
protected void appendGroupByFields(SolrQuery solrQuery, List<Field> fields) {
super.appendGroupByFields(solrQuery, fields);
solrQuery.set(GroupParams.GROUP_TOTAL_COUNT, true);
}
};
solrTemplate.registerQueryParser(Query.class, modifiedParser);
SolrCallback
덜 방해 옵션이 될 것입니다 사용.
Iv가 더 가깝게 보였고 DefaultQueryParser에서 그룹 쿼리 결과를 평탄하게 만들고 응답에서 정상 결과로 반환하는 다음 줄'solrQuery.setParam (GroupParams.GROUP_MAIN, true); ' 그룹 카운트 값이 그룹의 속성으로 반환된다는 점을 제외하고는 매우 좋습니다. 그래서 당신이 설명했던 예제에서는 전혀 반환되지 않을 것입니다. GroupParams.GROUP_MAIN없이 그룹 쿼리를 처리하도록 SolrTemplate을 수정했으나 정확한 해결책은 아닌지 확실하지 않습니다. 도서관 테스트 나 내 자신의 테스트를 망가지지 않습니다. – user779420