我在Solr中的MultiValued字段(字段名:multival)上编写了一个自定义函数查询。 下面是代码
public class testMultiValValueSourceParser extends ValueSourceParser {
public void init(NamedList namedList) {
}
@Override
public ValueSource parse(FunctionQParser fp) throws SyntaxError {
List<ValueSource> sources = fp.parseValueSourceList();
MultiValueSource mv1 = null;
if (sources.size() == 0) {
throw new Error("No value sources detected");
} else if (sources.size() == 1) {
ValueSource vs = sources.get(0);
if (!(vs instanceof MultiValueSource)) {
throw new SyntaxError("multival - invalid parameters:" + sources);
}
mv1 = (MultiValueSource)vs;
}
String fieldName = "multival";
return (new testMultiValSource(fieldName,mv1,fp));
}
}
测试功能查询时出现错误
"msg":"can not use FieldCache on multivalued field: multival",
错误在第
行List<ValueSource> sources = fp.parseValueSourceList();
我通过solr UI在“ fl”字段中将函数查询称为“ test(multival)”,其中“ test”是我在solr配置文件上定义的函数查询的名称。
知道为什么会这样吗?