我现在使用的是solr 3.3,在查询中需要使用mod函数,但是mod函数直到4.0才存在。所以,我想使用其他功能来替换 3.3 中的 mod,比如
q=subject:mp3&fq={!frange l=1 u=1}sub(id,product(floor(div(id,2)),2)).
但是我发现这个函数不起作用,因为 sub(id,product(floor(div(id,2)),2)) 将等于 id 即使 id 是奇数。有没有人可以在 3.3 中替换 mod 功能?谢谢
如果你已经写过一些Java,应该很容易实现,只需要写一个ModFunction
类(例如见div实现)。然后为它写一个ValueSourceParser
,它应该是这样的:
public class ModFunctionParser extends ValueSourceParser {
@Override
public ValueSource parse(FunctionQParser fp) throws ParseException {
ValueSource a = fp.parseValueSource();
ValueSource b = fp.parseValueSource();
return new ModFunction(a, b);
}
}