[KinoSearch] Field-specific terms vs. query filter?

Marvin Humphrey marvin at rectangular.com
Sat Dec 1 10:20:26 PST 2007



Howdy, Larry...

On Nov 30, 2007, at 6:47 PM, Larry Leszczynski wrote:

> I'm working with an index that has a "category_id" field, and I  
> need to filter search results based on specific categories which  
> the user shouldn't be able to see.  Right now I'm taking the user's  
> original query and appending a lot of booleans with field-specific  
> terms, e.g. a search for "foo" turns into something like "(foo) AND  
> NOT (category_id:1) AND NOT (category_id:7) AND NOT ...".
>
> Is there any advantage to building up a Boolean query for just the  
> category_id parts, and using that as a query filter instead?  I  
> won't necessarily be able to cache/reuse the query filter.

There shouldn't be much difference if any between the filtering  
approach and the complex-query approach.  You have to build up the  
same data either way; the QueryFilter just executes the "excluded"  
parts of the search first and stuffs the result into a BitVector,  
then applies that to the "required" part.

If you were able to keep the QueryFilter objects around, then on  
subsequent searches, you wouldn't have to re-run the excluded parts  
of the search, but oh well.  If the box you're running this on has  
sufficient memory, the kernel cache will probably help you out behind  
the scenes.

> Is there a better way in general to do this?

Though there are some approaches that we could take for better  
supporting this kind of search, they all involve caching something.   
For large datasets, KS is really designed to be used with a  
persistent search object.  For small datasets, it doesn't matter.   
Where the threshold between "large" and "small" lies depends on a lot  
of variables.

> Related question:  Assuming the category_id field is indexed but  
> not analyzed, is a field-specific term going to do an exact match?   
> I.e. will "category_id:1" match just "1", or will it also match "10"?

It will do an exact match.

Cheers,

Marvin Humphrey
Rectangular Research
http://www.rectangular.com/



_______________________________________________
KinoSearch mailing list
KinoSearch at rectangular.com
http://www.rectangular.com/mailman/listinfo/kinosearch




More information about the kinosearch mailing list