On 8/24/2011 2:02 PM, Joshua Harness wrote:
I've done some basic query performance testing on my SOLR instance, which allows users to search via a faceted search interface. As such, document relevancy is less important to me since I am performing exact match searching. Comparing using filter queries with a plain query has yielded remarkable performance. However, I'm suspicious of statements like 'always use filter queries since they are so much faster'. In my experience, things are never so straightforward. Can anybody provide any further guidance? What are the pitfalls of relying heavily on filter queries? When would one want to use plain vanilla SOLR queries as opposed to filter queries?
Completely separate from any performance consideration, the key to their usage lies in their name: They are filters. They are particularly useful in a faceted situation, because you can have more than one of them, and the overall result is the intersection (AND) of them all.
When someone tells the interface to restrict their search by a facet, you can simply add a filter query with the field:value relating to that facet and reissue the query. If they decide to remove that restriction, you just have to remove the filter query. You don't have to try and combine the various pieces in the query, which means you'll have much less hassle with parentheses.
If you need a union (OR) operation with your filters, you'll have to use more complex construction within a single filter query, or not use them at all.
Thanks, Shawn