> Do you mean that we  have current Index as it is and have a separate core
> which  has only the user-id ,product-id relation and at while querying ,do a
> join between the two cores based on the user-id.
Exactly. You can index user-id, product-id relation either to the same
core or to different core on the same Solr instance.

> This would involve us to Index/delete the product  as and when the user
> subscription for a product changes ,This would involve some amount of
> latency if the Indexing (we have a queue system for Indexing across the
> various instances) or deletion is delayed
Right, but I'm not sure if it's possible to achieve good performance
requiring zero latency.

> IF we want to go ahead with this solution ,We currently are using solr 1.3
> , so  is this functionality available as a patch for solr 1.3?
No. AFAIK it's in trunk only.

> Would it be
> possible to  do with a separate Index  instead of a core ,then I can create
> only one  Index common for all our instances and then use this instance to
> do the join.
No, I don't think that's possible with join feature. I guess that
would require network request per search req and number of mapped ids
could be huge, so it could affect performance significantly.

> You'll need to be a bit careful using joins, as the performance hit
> can be significant if you have lots of cross-referencing to do, which
> I believe you would given your scenario.
As far as I understand join query would build bitset filter which can
be cached in filterCache, etc. The only performance impact I can think
of is that user-product relations table could be too big to fit into
single instance.

Reply via email to