Hello,

It's the first time that I hear about those Lucene expressions written in
JavaScript. Good to learn about it!
I suppose you're referring to
https://lucene.apache.org/core/9_0_0/expressions/org/apache/lucene/expressions/js/package-summary.html
?
I couldn't find much information about how to use it, especially in
combination with Solr. If someone knowledgeable could chime in, that would
be great.
Though what I see on the API documentation page at first impression, is
that the list of supported functions is pretty limited.
Actually, I think that Solr's decorators provide a similar coverage of
functions out of the box:
https://solr.apache.org/guide/8_11/stream-evaluator-reference.html.
If I can find some time, I will play with my java() decorator idea and see
if it is any good.
Especially in terms of performance, where JavaScript-in-Lucene could have
the upper hand indeed.

Regards,

On Tue, Jan 4, 2022 at 6:41 PM David Smiley <[email protected]> wrote:

> I'd prefer to use Lucene's "expressions" module and thus do JavaScript.
> This is more accessible to a wider audience, and I believe makes
> safety/security easier (though I have not checked).
>
> ~ David Smiley
> Apache Lucene/Solr Search Developer
> http://www.linkedin.com/in/davidwsmiley
>
>
> On Tue, Jan 4, 2022 at 12:30 PM Eric Pugh <[email protected]
> >
> wrote:
>
> > That looks great!  I love how (relatively) simple it all is to write your
> > own logic.
> >
> > One of the reasons that we added packages (bin/solr package) to Solr is
> so
> > that if someone wants to add something like a java() evaluator, they can!
> >
> > > On Jan 4, 2022, at 11:40 AM, Damiano Albani <[email protected]>
> > wrote:
> > >
> > > Hi,
> > >
> > > Just a quick note to mention that I've managed to implement what I
> wanted
> > > in terms of non equi-joins.
> > > Should someone be interested, I've put my code on
> > > https://github.com/dalbani/solr-streaming-expressions.
> > >
> > > By the way, I happened to need a startsWith function and I implemented
> it
> > > quite easily.
> > > But I'm wondering if a very generic -- if not possibly not very safe --
> > > java() evaluator could be built.
> > > That would open streaming expressions to the whole Java API instead of
> > > having to write individual evaluators.
> > > For the example of startsWith, it could look like something in the
> range
> > of:
> > >
> > >> java(val(Hello), val(World), "arg0.startsWith(arg1)")
> > >
> > > Using say, https://www.javassist.org/, to turn the code argument into
> > > bytecode.
> > > What do you think?
> > >
> > > Regards,
> > >
> > > On Wed, Dec 29, 2021 at 12:39 PM Damiano Albani <
> > [email protected]>
> > > wrote:
> > >
> > >> Hello,
> > >>
> > >> I'm new to streaming expressions, so I'm trying to understand their
> > >> features and limitations.
> > >> In particular the so-called "stream operators" implementing join
> > >> operations.
> > >> Like "innerJoin", "leftOuterJoin", etc.
> > >>
> > >> I see that they support a "on" parameter, defining the *equality*
> check
> > >> to be performed.
> > >> But, coming from the SQL world, I'm used to being able to use a
> variety
> > of
> > >> comparison operators in join predicates. That is, not only equality,
> as
> > in
> > >> "equi-joins".
> > >>
> > >> Is there a reason why the current implementation of Solr supports
> > >> equi-joins only? Would it be technically possible (and desired) to
> > support
> > >> other comparison operators with joins?
> > >> And maybe somehow allow the use of the available stream evaluators
> > >> <https://solr.apache.org/guide/8_11/stream-evaluator-reference.html>?
> > >>
> > >> To give the context of my question: I'm trying to join 2 sets of
> > documents
> > >> with a hierarchical relationship.
> > >> My goal is to join them using a "path" field on one side and
> > >> "descendent_path" field on the other side.
> > >> But it looks like that only doc values are accessible (and not
> analyzed
> > >> ones) in streams, so I suppose I'd be left with a join criteria like
> > this
> > >> pseudo-code:
> > >>
> > >>>  on="starts_with(right.path, left.path)"
> > >>
> > >> Where, in this hypothetical example:
> > >>
> > >>>  left.path=/categories/category1"
> > >>>  right.path=/categories/category1/sub-categories/sub-category-a"
> > >>
> > >>
> > >> Or do I completely misunderstand how Solr (streams) work? ;-)
> > >> Thanks for your help!
> > >>
> > >> Regards,
> > >>
> > >> --
> > >> Damiano Albani
> > >>
> > >
> > >
> > > --
> > > Damiano Albani
> >
> > _______________________
> > Eric Pugh | Founder & CEO | OpenSource Connections, LLC | 434.466.1467 |
> > http://www.opensourceconnections.com <
> > http://www.opensourceconnections.com/> | My Free/Busy <
> > http://tinyurl.com/eric-cal>
> > Co-Author: Apache Solr Enterprise Search Server, 3rd Ed <
> >
> https://www.packtpub.com/big-data-and-business-intelligence/apache-solr-enterprise-search-server-third-edition-raw
> >
> >
> > This e-mail and all contents, including attachments, is considered to be
> > Company Confidential unless explicitly stated otherwise, regardless of
> > whether attachments are marked as such.
> >
> >
>


-- 
Damiano Albani

Reply via email to