[
https://issues.apache.org/jira/browse/SOLR-7584?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Dennis Gove updated SOLR-7584:
------------------------------
Attachment: SOLR-7584.patch
Part of this ticket is a change in comparators and equalitors to support
differing field names on either side of the comparison (ie, fieldA = fieldB).
Due to changes that have come into trunk between the creation of this patch and
now it was required that I propagate those changes to a couple of other files.
Note, I originally included this change in SOLR-7669 but realized today that
it's actually necessary in this patch. Here's me regretting the decision to not
create a separate ticket for the equalitor/comparator changes but this patch
does also add support for distributed joins so there's that. Either way,
description of change is below.
Required a couple of changes in the SQL and FacetStream areas related to
FieldComparator. The FieldComparator has been changed to support different
field names on the left and right side. The SQL and FacetStream areas use
FieldComparator for sorting (a totally valid use case) but do expect the left
and right side field names to be equal. The changes I made go through and
validate that assumption.
In the future I think I may circle back around and create a new FieldComparator
with a single field name so that on construction that assumption can be
enforced.
All tests pass.
> Add Joins to the Streaming API and Streaming Expressions
> --------------------------------------------------------
>
> Key: SOLR-7584
> URL: https://issues.apache.org/jira/browse/SOLR-7584
> Project: Solr
> Issue Type: Improvement
> Components: SolrJ
> Reporter: Dennis Gove
> Priority: Minor
> Labels: Streaming
> Attachments: SOLR-7584.patch, SOLR-7584.patch, SOLR-7584.patch,
> SOLR-7584.patch, SOLR-7584.patch
>
>
> Add InnerJoinStream, LeftOuterJoinStream, and supporting classes to the
> Streaming API to allow for joining between sub-streams.
> At its basic, it would look something like this
> {code}
> innerJoin(
> search(collection1, q=*:*, fl="fieldA, fieldB, fieldC", ...),
> search(collection2, q=*:*, fl="fieldA, fieldD, fieldE", ...),
> on="fieldA=fieldA"
> )
> {code}
> or with multi-field on clauses
> {code}
> innerJoin(
> search(collection1, q=*:*, fl="fieldA, fieldB, fieldC", ...),
> search(collection2, q=*:*, fl="fieldA, fieldD, fieldE", ...),
> on="fieldA=fieldA, fieldB=fieldD"
> )
> {code}
> I'd also like to support the option of doing a hash join instead of the
> default merge join but I haven't yet figured out the best way to express
> that. I'd like to let the user tell us which sub-stream should be hashed (the
> least-cost one).
> Also, I've been thinking about field aliasing and might want to add a
> SelectStream which serves the purpose of allowing us to limit the fields
> coming out and rename fields.
> Depends on SOLR-7554
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]