Class JavascriptCompiler

java.lang.Object
org.apache.lucene.expressions.js.JavascriptCompiler

public final class JavascriptCompiler extends Object
An expression compiler for javascript expressions.

Example:

   Expression foo = JavascriptCompiler.compile("((0.3*popularity)/10.0)+(0.7*score)");
 

See the package documentation for the supported syntax and default functions.

You can compile with an alternate set of functions via compile(String, Map, ClassLoader). For example:

   Map<String,Method> functions = new HashMap<>();
   // add all the default functions
   functions.putAll(JavascriptCompiler.DEFAULT_FUNCTIONS);
   // add cbrt()
   functions.put("cbrt", Math.class.getMethod("cbrt", double.class));
   // call compile with customized function map
   Expression foo = JavascriptCompiler.compile("cbrt(score)+ln(popularity)",
                                               functions,
                                               getClass().getClassLoader());
 
WARNING: This API is experimental and might change in incompatible ways in the next release.
  • Field Details

  • Method Details

    • compile

      public static Expression compile(String sourceText) throws ParseException
      Compiles the given expression.
      Parameters:
      sourceText - The expression to compile
      Returns:
      A new compiled expression
      Throws:
      ParseException - on failure to compile
    • compile

      public static Expression compile(String sourceText, Map<String,Method> functions, ClassLoader parent) throws ParseException
      Compiles the given expression with the supplied custom functions.

      Functions must be public static, return double and can take from zero to 256 double parameters.

      Parameters:
      sourceText - The expression to compile
      functions - map of String names to functions
      parent - a ClassLoader that should be used as the parent of the loaded class. It must contain all classes referred to by the given functions.
      Returns:
      A new compiled expression
      Throws:
      ParseException - on failure to compile