[ 
https://issues.apache.org/jira/browse/SOLR-12673?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16583225#comment-16583225
 ] 

Mike Sokolov commented on SOLR-12673:
-------------------------------------

I think you can accomplish this with a RegexpQuery, which allows for negation. 
Something like:

    ~(user1|user2)

It will be OK if the number of distinct users is not too large. I'm not sure 
you can do any better without some kind of precomputation of groups. For 
example, you could use the RegExp query and caching, or proactively come up 
with user anti-groups that are frequently queried together, and index those.

> Superset Query
> --------------
>
>                 Key: SOLR-12673
>                 URL: https://issues.apache.org/jira/browse/SOLR-12673
>             Project: Solr
>          Issue Type: New Feature
>      Security Level: Public(Default Security Level. Issues are Public) 
>            Reporter: Varun Thacker
>            Priority: Major
>
> Here's the use-case I am trying to solve for document level access control.
> Documents :
> {code:java}
> [
>   {"id" : "1", "users" : ["user1"]},
>   {"id" : "2", "users" : ["user4"]},
>   {"id" : "3", "users" : ["user1", "user2"]},
>   {"id" : "4", "users" : ["user1", "user2", "user3"]},
>   {"id" : "5", "users" : ["user1", "user2", "user3", "user4"]}
> ]{code}
>  
> Query : If the document has any user apart from user1, user2 or user3 don't 
> show it.
> Results : id:1, id:3, id:4
> Query : If the document has any user apart from user1, user2 don't show it.
> Results : id:1, id:3
> I'm thinking this can be solved by writing a post-filter
> Syntax:
> {code:java}
> {!union_has_all field=users}user1,user2,user3{code}
> The post filter would get each document at a time and see if there is a user 
> in that document that is not part of the query.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to