あなたはSolrClient
にアクセスするためのテンプレートレベルでSolrCallback
を使用して、そこからクエリを実行するか、またはカスタムクエリのタイプにQueryParser
自分自身を登録することができます。
たぶんのようなもの:避けるために
@Bean
public SolrTemplate solrTemplate(SolrClient client) {
SolrTemplate template = new SolrTemplate(client);
template.registerQueryParser(EdismaxQuery.class, new EdisMaxQueryParser());
return template;
}
class EdismaxQuery extends SimpleQuery {
// ... add stuff you need. Maybe `autoRelax`
}
class EdisMaxQueryParser extends QueryParserBase<EdismaxQuery> {
DefaultQueryParser defaultQueryParser = new DefaultQueryParser();
@Override
public SolrQuery doConstructSolrQuery(EdismaxQuery source) {
// just use the default parser to construct the query string in first place.
SolrQuery target = defaultQueryParser.constructSolrQuery(source);
// add missing parameters
target.add("defType", "edismax");
target.add("qf", source....);
return target;
}
}
私はこのエラーを得ました.solr.core.QueryParserBase $ NamedObjectsQueryをEdismaxQuery'にキャストできません – kk17