Depuis la version Solr 4.0, il est possible de réaliser des recherches avec une simulation de jointure. Le wiki Solr est assez peu détaillé sur le sujet et bizarrement ne mentionne que les possibilités utilisant un seul index (un seul core).
Tout d’abord cette fonctionnalité de Solr n’est pas vraiment similaire à une jointure SQL mais plutôt à une recherche imbriquée telle que :
SELECT xxx, yyy FROM articles WHERE id_author IN (SELECT id_author FROM articles WHERE subjet = "java")
Ce qui se traduit par « rechercher les articles des auteurs ayant déjà écrit un article sur java » et qui donne une requête Solr similaire à ceci :
/solr/articles/select?fl=xxx,yyy&q={!join from=id_author to=id_author}subject:java
Ce type de recherche est très intéressante, mais il peut être également intéressant d’utiliser un autre index pour la requête imbriquée. Par exemple :
SELECT xxx, yyy FROM articles WHERE title like '%energy%' AND id_author IN (SELECT id FROM users WHERE country = "france")
Ce qui se traduit par « rechercher les articles des auteurs français dont le titre contient le mot energy » et qui donne une requête Solr similaire à ceci :
/solr/articles/select?fl=xxx,yyy&q=Energy&q=energy&fq={!join%20from=id%20to=id_author%20fromIndex=users}country:france
Tout le secret ici est dans l’utilisation de « fromIndex= » dans la fonction join.