3

現在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 機能の有効な代替品を提供できる人はいますか? ありがとう

4

1 に答える 1

1

すでに 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);
  }
}

最後に、このパーサーを solrconfig.xml に登録します

于 2012-09-03T09:40:49.327 に答える