package org.apache.lucene.queryparser.flexible.aqp.builders; import org.apache.lucene.queryparser.flexible.aqp.config.AqpAdsabsQueryConfigHandler; import org.apache.lucene.queryparser.flexible.aqp.config.AqpRequestParams; import org.apache.lucene.queryparser.flexible.core.QueryNodeException; import org.apache.lucene.queryparser.flexible.core.config.QueryConfigHandler; import org.apache.lucene.queryparser.flexible.core.nodes.QueryNode; import org.apache.solr.request.SolrQueryRequest; import org.apache.solr.search.AqpFunctionQParser; import org.apache.solr.search.ValueSourceParser; /** * Returns a special FunctionQParser provider for the functions implemented * by Solr functions: http://wiki.apache.org/solr/FunctionQuery * */ public class AqpSolrFunctionProvider implements AqpFunctionQueryBuilderProvider { public AqpFunctionQueryBuilder getBuilder(String funcName, QueryNode node, QueryConfigHandler config) throws QueryNodeException { AqpRequestParams reqAttr = config.get(AqpAdsabsQueryConfigHandler.ConfigurationKeys.SOLR_REQUEST); SolrQueryRequest req = reqAttr.getRequest(); if (req == null) return null; ValueSourceParser provider = req.getCore().getValueSourceParser(funcName); if (provider == null) return null; AqpFunctionQParser fParser = new AqpFunctionQParser(null, reqAttr.getLocalParams(), reqAttr.getParams(), req); //AqpFunctionQueryTreeBuilder.flattenChildren(node); //AqpFunctionQueryTreeBuilder.simplifyValueNode(node); return new AqpFunctionQueryTreeBuilder(provider, fParser); } }