所以我有这个课程:
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),但没有任何结果。
想法?
答案 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);
}
}