Thanks, but I don't want to exclude all tracks that are associated with albums, I want to exclude tracks that are associated with albums *which match the query* (tracks and their associated albums may have different tags). I don't think your suggestion covers that.
On Fri, Apr 6, 2012 at 9:35 AM, Erick Erickson <erickerick...@gmail.com> wrote: > I'd consider a field like "associated_with_album", and a > field that identifies the kind of record this is "track or album". > > Then you can form a query like -associated_with_album:true > (where '-' is the Lucene or NOT). > > And then group by kind to get separate groups of albums and > tracks. > > Hope this helps > Erick > > On Thu, Apr 5, 2012 at 9:00 PM, N. Tucker > <ntucker-ml-solr-us...@august20th.com> wrote: >> Apologies if this is a very straightforward schema design problem that >> should be fairly obvious, but I'm not seeing a good way to do it. >> Let's say I have an index that wants to model Albums and Tracks, and >> they all have arbitrary tags attached to them (represented by >> multivalue string type fields). Tracks also have an album id field >> which can be used to associate them with an album. I'd like to >> perform a query which shows both Track and Album results, but >> suppresses Tracks that are associated with Albums in the result set. >> >> I am tempted to use a "join" here, but I have reservations because it >> is my understanding that joins cannot work across shards, and I'm not >> sure it's a good idea to limit myself in that way if possible. Any >> suggestions? Is there a standard solution to this type of problem >> where you've got hierarchical items and you don't want children shown >> in the same result as the parent?