A little update:
I went for the "Config Edition" solution. So I now have 2 attributes:
- Viewers, which contains a list of user_ids who can access the
contact
- removed_owners, which contains a list of users which do not have
access to the contact. This one overrides the viewers_list in case an
id appears in both lists.

I tried filtering the results in my search with:
:with     => { :viewers => [[email protected]]},
:without => {:removed_owners => [...@user_id]}

But that gives me no result at all.
If I remove the :without part, I do get results though.

I ran the query from the config file, removed_owners is 0 for all
contacts as I currently do not have any 'banned' user. In other words,
removed_owners can never match @user.id

Any idea what could cause this?

Best regards,

Gedeon

On Jul 20, 2:54 pm, Gedeon <[email protected]> wrote:
> Hello Pat,
>
> Thinking Sphinx is doing a great job for us lately, thanks to your
> help a couple of months ago!
> I am now coming back with a question, as I need would some advice from
> the expert...
>
> We have a Contacts database that was indexed fairly easily until
> recently. A new feature was added in our project which allows users to
> share contacts.
> I have to make that searchable and it turns out to be some kind of
> nightmare.
>
> I would need to replace our current:
> has "IF(view_permission = 0, 0, contact_owner)", :as => :owner, :type
> => :integer
> into a "has viewers" parameter to filter the results. Instead of
> 'contact_owner',I would have a list of user ids whom can view the
> contact.
> That list of ids is basically a concatenation of the results from 4
> queries (at the end of this message).
>
> I don't see this fitting in a "has" parameter. Could you recommend me
> a way of doing this?
>
> I was thinking of using a stored procedure, but AFAIK it's not
> possible to call a stored procedure from a "has"...
> Linking the queries using "union"? But AFAIK, I cannot concatenate the
> result set from UNIONs into a string that can be used by TS.
> Tweaking the config file? I'd rather not do that as it would cause
> changes in many other places (deployments, cron jobs, new instances of
> the project, team notification,...) but if it's the only solution, I
> can give it a try.
> Something else?
>
> The 4 queries, for person 92 in this case:
>
> - The contact owner:
> SELECT contact_owner from people where id = 92;
>
> - Users with whom the contact is manually shared:
> SELECT shared_contacts.user_id
> FROM people, shared_contacts
> WHERE people.id = 92 AND people.id = shared_contacts.person_id AND
> flag = 1;
>
> - The owner's assistants:
> select uwfs.user_id
> FROM people, users owner, user_work_fors uwfs
> WHERE people.id =92
> AND owner.id = people.contact_owner
> AND owner.id = uwfs.work_for_id
>
> - From all this, I need to remove assistants from whom the contact is
> manually hidden:
> SELECT shared_contacts.user_id
> FROM people, shared_contacts
> WHERE people.id = 92 AND people.id = shared_contacts.person_id AND
> flag = 0;
>
> Thank you,
> Best regards
>
> Gedeon

-- 
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/thinking-sphinx?hl=en.

Reply via email to