OK, if I can find some time, I'll have a try.
In the long run, it would be better (for me) to have the functionality by
default in Solr than to maintain my own piece of code 😀

On Fri, Jan 7, 2022 at 1:42 AM Dennis Gove <dpg...@gmail.com> wrote:

> Hi Damiano,
>
> Yup, that's what I meant. I'd be happy to collaborate with you on this.
>
> Cheers!
>
> On Thu, Jan 6, 2022 at 5:09 PM Damiano Albani <damiano.alb...@gmail.com>
> wrote:
>
> > Hi Dennis,
> >
> > Do you (implicitly) mean by your message that it would be a good idea to
> > get the changes you mentioned into the official Solr code base?
> > In other words, that a PR implementing this enhancement would be
> considered
> > by the Solr team?
> >
> > Regards,
> >
> > On Wed, Jan 5, 2022 at 1:58 AM Dennis Gove <dpg...@gmail.com> wrote:
> >
> > > My recollection from working on this code years ago is that other
> > > definitions of "equal" can be supported by creating new implementations
> > of
> > > the Equalitor class (
> > >
> > >
> >
> https://github.com/apache/solr/blob/main/solr/solrj/src/java/org/apache/solr/client/solrj/io/eq/Equalitor.java#L27-L30
> > > ).
> > > The purpose of the Equalitor class is not so much to say "these two
> > values
> > > are the same" but instead "these values can be joined on". Joins were
> one
> > > of the first streaming expressions created and as such existed before
> > > evaluators. The Equalitor class is a bit of an unfortunate holdover
> from
> > > that initial implementation. Were I doing it again now I'd use
> evaluators
> > > instead.
> > >
> > > That said, it may be possible to refactor the Equalitor class as a type
> > of
> > > Evaluator. An approach like that would, I think, clean up what's
> become a
> > > confusing holdover of that original implementation and simultaneously
> > make
> > > it possible to use any evaluator within a join clause.
> > >
> > > Alternatively, it'd be possible to enhance the join classes to support
> > > either Equalitors or Evaluators. Equalitors are constructed with this
> > > method -
> > >
> > >
> >
> https://github.com/apache/solr/blob/main/solr/solrj/src/java/org/apache/solr/client/solrj/io/stream/expr/StreamFactory.java#L352
> > > - so you could enhance any place that's called from to also support
> > > Evaluators.
> > >
> > > Cheers,
> > > Dennis
> > >
> > > On Tue, Jan 4, 2022 at 5:00 PM Damiano Albani <
> damiano.alb...@gmail.com>
> > > wrote:
> > >
> > > > 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 <dsmi...@apache.org>
> > 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 <
> > > > ep...@opensourceconnections.com
> > > > > >
> > > > > 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 <
> > > > damiano.alb...@gmail.com>
> > > > > > 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 <
> > > > > > damiano.alb...@gmail.com>
> > > > > > > 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
> > > >
> > >
> >
> >
> > --
> > Damiano Albani
> >
>


-- 
Damiano Albani

Reply via email to