Thanks. I'll look into that stuff. The counts issue is really not a serious
problem for us far as I know.

On Wed, Dec 21, 2016 at 9:08 PM, Erick Erickson <erickerick...@gmail.com>
wrote:

> "grab the response" is a bit ambiguous here in Solr terms. Sure,
> a SearchComponent (you can write a plugin) gets the response,
> but it only sees the final list being returned to the user, i.e. if you
> have rows=15 it sees only 15 docs. Not sure that's adequate,
> in the case above you could easily not be allowed to see any of
> the top N docs. Plus, doing anything like this would give very
> skewed things like facets, grouping, etc. Say the facets were
> calculated over 534 hits but the user was only allowed to see 10 docs...
> Very confusing.
>
> The most robust solution would be a "post filter", another bit
> of custom code that you write (plugin). See:
> http://yonik.com/advanced-filter-caching-in-solr/
> A post filter sees _all_ the documents that satisfy the query,
> and makes an include/exclude decision on each one (just
> like any other fq clause). So facets, grouping and all the rest
> "just work". Do be aware that if the ACL calculations are  expensive
> you need to be prepared for the system administrator doing a
> *:* query. I usually build in a bailout and stop passing documents
> after some number and pass back a result about "please narrow
> down your search". Of course if your business logic is such that
> you can calculate them all "fast enough", you're golden.
>
> All that said, if there's any way you can build this into tokens in the
> doc and use a standard fq clause it's usually much easier. That may
> take some creative work at indexing time if it's even possible.
>
> Best,
> Erick
>
> On Wed, Dec 21, 2016 at 5:56 PM, Mike Thomsen <mikerthom...@gmail.com>
> wrote:
> > We're trying out some ideas on locking down solr and would like to know
> if
> > there is a public API that allows you to grab the response before it is
> > sent and inspect it. What we're trying to do is something for which a
> > filter query is not a good option to really get where we want to be.
> > Basically, it's an integration with some business logic to make a final
> > pass at ensuring that certain business rules are followed in the event a
> > query returns documents a user is not authorized to see.
> >
> > Thanks,
> >
> > Mike
>

Reply via email to