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 using default compiler settings.
      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 using default compiler settings.

      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