从ValueSource Parser访问Solr参数

时间:2015-01-26 19:29:21

标签: solr lucene

所以我有这个课程:

public class CustomValueSourceParser extends ValueSourceParser {
    @Override
    public ValueSource parse(FunctionQParser fqp) throws ParseException {
        ...
        List<ValueSource> valSources = fqp.parseValueSourceList();
        String iComeFromTheSolrFunctionArguments = 
((LiteralValueSource)valSources.get(0)).getValue();
        String iComeFromTheSolrQuery;
        return new CustomValueSource(iComeFromTheSolrQuery, iComeFromTheSolrFunctionArguments);
    }
}

我想从solr查询本身获取变量iComeFromTheSolrQuery - 而不是从函数参数中获取(因为我将多次调用该函数,并且此字符串非常大)。

有办法做到这一点吗?我尝试在搜索条件中添加一个字段,然后调用fqp.getParams(FIELD_NAME),但没有任何结果。

想法?

1 个答案:

答案 0 :(得分:1)

想出来。我想要的是添加一个参数。不是一个领域。在配制查询时,我这样做了:

ModifiableSolrParams params = new ModifiableSolrParams();
params.set(PARAM_NAME_CONSTANT, paramValueString);

solrQuery.add(params);

然后在上面的代码中我得到了这样的参数:

public class CustomValueSourceParser extends ValueSourceParser {
    @Override
    public ValueSource parse(FunctionQParser fqp) throws ParseException {
        ...
        List<ValueSource> valSources = fqp.parseValueSourceList();
        String iComeFromTheSolrFunctionArguments = 
((LiteralValueSource)valSources.get(0)).getValue();
        String iComeFromTheSolrQuery=fqp.getParam(PARAM_NAME_CONSTANT);
        return new CustomValueSource(iComeFromTheSolrQuery, iComeFromTheSolrFunctionArguments);
    }
}