2012-09-03 39 views
3

現在我正在使用solr 3.3,並且需要在查詢中使用mod函數,但是mod函數在4.0之前不存在。所以,我想用其他functionsto代替國防部在3.3像如何在Solr 3.3中實現mod函數3.3

q=subject:mp3&fq={!frange l=1 u=1}sub(id,product(floor(div(id,2)),2)). 

但是我發現這個功能無法工作,導致該子(ID,產品(地板(DIV(ID,2)),2))將 等於id甚至id是奇數。有沒有人可以在3.3中爲mod函數提供一個替代工具?謝謝

回答

1

如果您已經編寫了一些Java,應該很容易實現,只需編寫ModFunction類(請參閱div implementation例如)。然後寫它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); 
    } 
} 

最後,register this parser in your solrconfig.xml

+0

好,問題已經用你的方式解決了。謝謝 – bata