Joel Bernstein created SOLR-6568:
------------------------------------

             Summary: Join Discovery Contrib
                 Key: SOLR-6568
                 URL: https://issues.apache.org/jira/browse/SOLR-6568
             Project: Solr
          Issue Type: New Feature
            Reporter: Joel Bernstein
            Priority: Minor
             Fix For: 5.0


This contribution was commissioned by the *NCBI* (National Center for 
Biotechnology Information). 

The Join Discovery Contrib is a set of Solr plugins that support large scale 
joins and "join facets" between Solr cores. 

There are two different Join implementations included in this contribution. 
Both implementations are designed to work with integer join keys. 
It is very common in large BioInformatic and Genomic databases to use integer 
primary and foreign keys. Integer keys allow Bioinformatic and Genomic search 
engines and discovery tools 
to perform complex operations on large data sets very efficiently. The Join 
Discovery Contrib provides features that will be applicable to anyone working 
with the freely available databases from 
the NCBI and likely a large number of other BioInformatic and Genomic 
databases. These features are not specific though to Bioinformatics and 
Genomics, they can be used in any datasets where integer
keys are used to define the primary and foreign keys.

What is is included in this contrib:

1) A new JoinComponent. This component is used instead of the standard 
QueryComponent. It facilitates very large scale relational joins between two 
Solr indexes (cores). The join algorithm used in this 
component is known as a *parallel partitioned merge join*. This is an algorithm 
which partitions the results from both sides of the join and then sorts and 
merges the partitions in parallel. 

 Below are some of it's features:

* Sub-second performance on very large joins. The parallel join algorithm is 
capable of sub-second performance on joins with tens of millions of records on 
both sides of the join.
* The JoinComponent returns "tuples" with fields from both sides of the join. 
The initial release returns the primary keys from both sides of the join and 
the join key. 
* The tuples also include, and are ranked by, a combined score from both sides 
of the join.
* Special purpose memory-mapped on-disk indexes to support *:* joins. This 
makes it possible to join an entire index with a sub-set of another index with 
sub-second performance. 
* Support for very fast one-to-one, one-to-many and many-to-many joins. Fast 
many-to-many joins make it possible to join between indexes on multi-value 
fields. 

2) A new JoinFacetComponent. This component provides facets for both indexes 
involved in the join. 

3) The BitSetJoinQParserPlugin. A very fast parallel filter join based on 
bitsets that supports infinite levels of nesting. It can be used as a filter 
query in combination with the JoinComponent or with the standard query
component. 




--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to