<!> Solr4.0

Introduction

In many cases, documents have relationships between them and it is too expensive to denormalize them. Thus, a join operation is needed. Preserving the document relationship allows documents to be updated independently without having to reindex large numbers of denormalized documents.

Input Parameters

Joins are processed using Solr's LocalParams syntax. The query typically looks like: q={!join from=manu_id_s to=id}ipod

Thus, you need the join QueryParser(Plugin) which is specified by the  {!join}  syntax. Then, you specify the foreign key relationship by giving the from and to fields to join on.

Examples

In the example data, all documents have a unique "id" field, but documents modeling products also have a "manu_id_s" which is essentially a "foreign key" to the "id" of the associated manufacturer doc.

Compared To SQL

For people who are used to SQL, it's important to note that Joins in Solr are not really equivalent to SQL Joins because no information about the table being joined "from" is carried forward into the final result. A more appropriate SQL analogy would be an "inner query".

This Solr request...

/solr/collection1/select ? fl=xxx,yyy & q={!join from=inner_id to=outer_id}zzz:vvv

Is comparable to this SQL statement...

SELECT xxx, yyy
FROM collection1
WHERE outer_id IN (SELECT inner_id FROM collection1 where zzz = "vvv")

Limitations

Quick Start

/!\ NOTE: The described additions to the "browse" screen is currently dependent on SOLR-2502

Join (last edited 2013-12-10 14:41:29 by AndyLester)