You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-user@lucene.apache.org by Vasu Y <vy...@gmail.com> on 2016/07/06 16:19:09 UTC

Post filter with boolean query

Hi,
 I am trying to apply a filter by specifying cost=100, but I would like to
use boolean query on lines described below and it seems to be filtering
documents; not sure if it's doing pre-filtering or post-filtering.

But, I saw some old post that "if the query inside the filter does not have
a PostFilter implementation then the post filter is silently transformed
into a simple filter"; which means the following filter query is treated as
a simple filter (pre-filter) and not as a post-filter.

{!cache=false cost=100}(moduleId: m1) AND (objType: (type1)) AND
(objIds:(id1 id2 id3))

Is there a way to know if a filter was executed as pre-filter or
post-filter when we run the query?

Thanks,
Vasu

Re: Post filter with boolean query

Posted by Erick Erickson <er...@gmail.com>.
Not from the response, but a simple approach in a controlled
environment, i.e. one
where only _you_ are querying the index and there is no indexing going on is
to look at the admin UI>>your_core>>plugins/stats>>caches>>filterCache. You'll
see the insertions/deletions/hits count. So, after a restart, look at
that page and
note the number of insertions. Then fire your query with that
post-filter. If the number
of insertions has stayed the same then it was not entered into the cache.

Best,
Erick

On Wed, Jul 6, 2016 at 9:19 AM, Vasu Y <vy...@gmail.com> wrote:
> Hi,
>  I am trying to apply a filter by specifying cost=100, but I would like to
> use boolean query on lines described below and it seems to be filtering
> documents; not sure if it's doing pre-filtering or post-filtering.
>
> But, I saw some old post that "if the query inside the filter does not have
> a PostFilter implementation then the post filter is silently transformed
> into a simple filter"; which means the following filter query is treated as
> a simple filter (pre-filter) and not as a post-filter.
>
> {!cache=false cost=100}(moduleId: m1) AND (objType: (type1)) AND
> (objIds:(id1 id2 id3))
>
> Is there a way to know if a filter was executed as pre-filter or
> post-filter when we run the query?
>
> Thanks,
> Vasu