Ah. Well that's what I thought, and that's where I get confused. Realistically speaking, we have, say, 10.000 public repositories and any given user may have 2 or 3 private repositories. This means that when the user searches, he should search among all those 10.000 public ones, but also his 2 or 3 private ones. That means we would have to query for repo_id:1 OR repo_id:2 OR .... repo_id:10000. This is going to get very long...
Jesper On Wed, Mar 25, 2009 at 9:10 PM, Alejandro Gonzalez <alejandrogonzalezd...@gmail.com> wrote: > try using db for permission management and when u want to make a rep public > u just have to add it's id or name to everyuser permissions field. i think > you don't need to add any "is_public" field to index, just an id or name > field in wich the indexed doc is.So you can pre-filter the reps quering the > db obtaining the reps for wich user has permissions and adding this > restrictions to the solr query. this way you can't change reps'permissions > without re-indexing. so the query for solr if the current user is allowed > for search in the 1 and 2 reps should be something like ...rep_id:1OR2... > > > Alex > > > On Wed, Mar 25, 2009 at 8:06 PM, Jesper Nøhr <jes...@noehr.org> wrote: > >> OK, we're getting closer. I just have two final questions regarding this >> then: >> >> 1. This would also include all the public repositories, right? If so, >> how would such a query look? Some kind of is_public:true AND ...? >> >> 2. When a repository is made public, the is_public property in the >> Solr index needs to reflect this. How can such an update be made >> without having to purge and re-index? >> >> >> Jesper >> >> >> On Wed, Mar 25, 2009 at 6:29 PM, Alejandro Gonzalez >> <alejandrogonzalezd...@gmail.com> wrote: >> > ok so u can create a table in a DB where you have a row foreach user and >> a >> > field with the reps he/she can access. Then you just have to take a look >> on >> > the db and include the repository name in the index. so you just have to >> > control (using query parameters) if the query is done for the right reps >> for >> > that user. >> > >> > is it good for u? >> > >> > >> > >> > On Wed, Mar 25, 2009 at 6:20 PM, Jesper Nøhr <jes...@noehr.org> wrote: >> > >> >> Hm, I must be missing something, then. >> >> >> >> Consider this. >> >> >> >> There are three repositories, A and B, C. There are two users, U1 and >> U2. >> >> >> >> Repository A is public, while B and C are private. Only U1 can access >> >> B. No one can access C. >> >> >> >> I index this data, such that Is_Private is true for B. >> >> >> >> Now, when U2 searches, he will only see data for repo A. This is >> correct. >> >> >> >> When U1 searches, what happens? AFAIK, he will also only see data for >> >> A, unless we specify Is_Private:True, but then he will only see data >> >> for B (and C, which he doesn't have access to.) >> >> >> >> Secondly, say we grant U2 access to B. How do we tell Solr that he can >> >> see it, then? >> >> >> >> Sorry if I'm not making much sense here, but I'm quite confused. >> >> >> >> >> >> Jesper >> >> >> >> >> >> >> >> On Wed, Mar 25, 2009 at 6:13 PM, Alejandro Gonzalez >> >> <alejandrogonzalezd...@gmail.com> wrote: >> >> > i can't see the problem about that. you can manage your users using a >> DB >> >> and >> >> > keep there the permissions they could have, and create or erase users >> >> > without problems. you just have to manage a "working index" field for >> >> each >> >> > user with repositories' ids he can access. or u can create several >> >> indexes >> >> > and a users solr index with a multi-valued field with the indexes the >> >> user >> >> > can access. >> >> > >> >> > if then u want to turn a private repository into public u just have to >> >> > change the permissions field in your DB or users' index. >> >> > >> >> > On Wed, Mar 25, 2009 at 6:02 PM, Jesper Nøhr <jes...@noehr.org> >> wrote: >> >> > >> >> >> On Wed, Mar 25, 2009 at 5:57 PM, Eric Pugh >> >> >> <ep...@opensourceconnections.com> wrote: >> >> >> > You could index the user name or ID, and then in your application >> add >> >> as >> >> >> > filter the username as you pass the query back to Solr. Maybe have >> a >> >> >> > access_type that is Public or Private, and then for public searches >> >> only >> >> >> > include the ones that meet the access_type of Public. >> >> >> >> >> >> That makes sense. Two questions on that: >> >> >> >> >> >> 1. More than one user can have access to a repository, so how would >> >> >> that work? Also, if a user is added/removed, what's the best way to >> >> >> keep that in sync? >> >> >> >> >> >> 2. In the event that a repository that is private, is made public, >> how >> >> >> easy would it be to run an "UPDATE" so to speak? >> >> >> >> >> >> >> >> >> Jesper >> >> >> >> >> >> > On Mar 25, 2009, at 12:52 PM, Jesper Nøhr wrote: >> >> >> > >> >> >> >> Hi list, >> >> >> >> >> >> >> >> I've finally settled on Solr, seeing as it has almost everything I >> >> >> >> could want out of the box. >> >> >> >> >> >> >> >> My setup is a complicated one. It will serve as the search backend >> on >> >> >> >> Bitbucket.org, a mercurial hosting site. We have literally >> thousands >> >> >> >> of code repositories, as well as users and other data. All this >> needs >> >> >> >> to be indexed. >> >> >> >> >> >> >> >> The complication comes in when we have private repositories. Only >> >> >> >> select users have access to these, but we still need to index >> them. >> >> >> >> >> >> >> >> How would I go about accomplishing this? I can't think of a clean >> way >> >> to >> >> >> >> do it. >> >> >> >> >> >> >> >> Any pointers much appreciated. >> >> >> >> >> >> >> >> >> >> >> >> Jesper >> >> >> > >> >> >> > ----------------------------------------------------- >> >> >> > Eric Pugh | Principal | OpenSource Connections, LLC | 434.466.1467 >> | >> >> >> > http://www.opensourceconnections.com >> >> >> > Free/Busy: http://tinyurl.com/eric-cal >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> > >> >> >> >> >> > >> >> >> > >> >