Thank you for your sharing, My current solution is similar to 2). But my problem is ACL is early-binding (which means I build index and embedded ACL with document index) I don't want to rebuild full index(a lucene/solr Document with PDF content and ACL) when front end change only permission settings.
Seems solution 2) have same problem. Floyd 2011/11/24 Robert Stewart <bstewart...@gmail.com>: > I have used two different ways: > > 1) Store mapping from users to documents in some external database > such as MySQL. At search time, lookup mapping for user to some unique > doc ID or some group ID, and then build query or doc set which you can > cache in SOLR process for some period. Then use that as a filter in > your search. This is more involved approach but better if you have > lots of ACLs per user, but it is non-trivial to implement it well. I > used this in a system with over 100 million docs, and approx. 20,000 > ACLs per user. The ACL mapped user to a set of group IDs, and each > group could have 10,000+ documents. > > 2) Generate a query filter that you pass to SOLR as part of the > search. Potentially it could be a pretty large query if user has > granular ACL over may documents or groups. I've seen it work ok with > up to 1000 or so ACLs per user query. So you build that filter query > from the client using some external database to lookup user ACLs > before sending request to SOLR. > > Bob > > > On Tue, Nov 22, 2011 at 10:48 PM, Floyd Wu <floyd...@gmail.com> wrote: >> Hi there, >> >> Is it possible to separate ACL index and document index and achieve to >> search by user role in SOLR? >> >> Currently my implementation is to index ACL with document, but the >> document itself change frequently. I have to perform rebuild index >> every time when ACL change. It's heavy for whole system due to >> document are so many and content are huge. >> >> Do you guys have any solution to solve this problem. I've been read >> mailing list for a while. Seem there is not suitable solution for me. >> >> I want user searches result only for him according to his role but I >> don't want to re-index document every time when document's ACL change. >> >> To my knowledge, is this possible to perform a join like database to >> achieve this? How and possible? >> >> Thanks >> >> Floyd >> >