[
https://issues.apache.org/jira/browse/LUCENE-5207?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13766068#comment-13766068
]
Uwe Schindler edited comment on LUCENE-5207 at 9/13/13 12:28 AM:
-----------------------------------------------------------------
Hi, very cool!
I like the elegant parser!
Its also the correct way to do the dynamic classes: 1 class per classloader, so
it can be unloaded easily. The JVM does the same for reflection speedups (it
creates stubs for Method#invoke calls, one stub per classloader). The "Loader"
class is already "policeman-certified" and used by my code, too.
I am not happy about the various raw "signatures" in binary form. I would
rewrite JavascriptFunction to take a java.lang.reflect.Method objects and use
[http://asm.ow2.org/asm40/javadoc/user/org/objectweb/asm/commons/Method.html#getMethod(java.lang.reflect.Method)]
or
[http://asm.ow2.org/asm40/javadoc/user/org/objectweb/asm/Type.html#getMethodDescriptor(java.lang.reflect.Method)]
to get the signature and argument count. The other hardcoded "L/foo/bar" stuff
should be rewritten to use
[http://asm.ow2.org/asm40/javadoc/user/org/objectweb/asm/Type.html#getDescriptor(java.lang.Class)].
I can help with that. By using real reflected types we have the safety that
all methods are syntactically correct and checked at runtime/compile time.
I think we should create a heavy committing branch. I would help, this is too
cool.
was (Author: thetaphi):
Hi, very cool!
I like the elegant parser!
Its also the correct way to do the dynamic classes: 1 class per classloader, so
it can be unloaded easily. The JVM does the same for reflection speedups (it
creates stubs for Method#invoke calls, one stub per classloader). The "Loader"
class is already "policeman-certified" and used by my code, too.
I am not happy about the various raw "signatures" in binary form. I would
rewrite JavascriptFunction to take a java.lang.reflect.Method objects and use
[http://asm.ow2.org/asm40/javadoc/user/org/objectweb/asm/commons/Method.html#getMethod(java.lang.reflect.Method)]
or
[http://asm.ow2.org/asm40/javadoc/user/org/objectweb/asm/Type.html#getMethodDescriptor(java.lang.reflect.Method)]
to get the signature and argument count. The other hardcoded "L/foo/bar" stuff
should be rewritten to use
[http://asm.ow2.org/asm40/javadoc/user/org/objectweb/asm/Type.html#getDescriptor(java.lang.Class)].
I can help with that. My using real reflected types we have the safety that
all methods are syntactically correct and checked at runtime/compile time.
I think we should create a heavy committing branch. I would help, this is too
cool.
> lucene expressions module
> -------------------------
>
> Key: LUCENE-5207
> URL: https://issues.apache.org/jira/browse/LUCENE-5207
> Project: Lucene - Core
> Issue Type: New Feature
> Reporter: Ryan Ernst
> Attachments: LUCENE-5207.patch
>
>
> Expressions are geared at defining an alternative ranking function (e.g.
> incorporating the text relevance score and other field values/ranking
> signals). So they are conceptually much more like ElasticSearch's scripting
> support (http://www.elasticsearch.org/guide/reference/modules/scripting/)
> than solr's function queries.
> Some additional notes:
> * In addition to referring to other fields, they can also refer to other
> expressions, so they can be used as "computed fields".
> * You can rank documents easily by multiple expressions (its a SortField at
> the end), e.g. Sort by year descending, then some function of score price and
> time ascending.
> * The provided javascript expression syntax is much more efficient than using
> a scripting engine, because it does not have dynamic typing (compiles to
> .class files that work on doubles). Performance is similar to writing a
> custom FieldComparator yourself, but much easier to do.
> * We have solr integration to contribute in the future, but this is just the
> standalone lucene part as a start. Since lucene has no schema, it includes an
> implementation of Bindings (SimpleBindings) that maps variable names to
> SortField's or other expressions.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]