[ 
https://issues.apache.org/jira/browse/LUCENE-1461?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12724580#action_12724580
 ] 

Uwe Schindler commented on LUCENE-1461:
---------------------------------------

{quote}
>From your performance runs, looking at the average times, forcing this
filter to take deletions into account made it ~2X slower. That's
quite costly.
{quote}

This is not only because of the deleted docs. Its also because the while loops 
are no longer hard coded with bounds, so there is an additional method call to 
check if something is a hit. The linear scan makes this also very costly. But 
without it, the code is unmaintainable (with all problems like copy/paste 
errors) and so on. It is almost 6 times the same code :(

{quote}
I would imagine that for most usage of this filter, taking deletes
into account is not necessary, because it's being used as a filter
with a query whose scorer won't return deleted docs. Then we've taken
this perf hit for nothing...
{quote}

I could put in a switch, that uses another iterator, if 0 is not inside the 
range (because then all deleted docs would never be hits) or the IR has no 
deletions. But I think this optimization is something for later.

In my opinion, in most cases TrieRange is better (and with Payloads, too). So I 
keeps this filter how it is for the beginning.

> Cached filter for a single term field
> -------------------------------------
>
>                 Key: LUCENE-1461
>                 URL: https://issues.apache.org/jira/browse/LUCENE-1461
>             Project: Lucene - Java
>          Issue Type: New Feature
>            Reporter: Tim Sturge
>            Assignee: Uwe Schindler
>             Fix For: 2.9
>
>         Attachments: DisjointMultiFilter.java, FieldCacheRangeFilter.patch, 
> LUCENE-1461.patch, LUCENE-1461.patch, LUCENE-1461.patch, LUCENE-1461.patch, 
> LUCENE-1461.patch, LUCENE-1461.patch, LUCENE-1461a.patch, LUCENE-1461b.patch, 
> LUCENE-1461c.patch, PerfTest.java, RangeMultiFilter.java, 
> RangeMultiFilter.java, TermMultiFilter.java, TestFieldCacheRangeFilter.patch
>
>
> These classes implement inexpensive range filtering over a field containing a 
> single term. They do this by building an integer array of term numbers 
> (storing the term->number mapping in a TreeMap) and then implementing a fast 
> integer comparison based DocSetIdIterator.
> This code is currently being used to do age range filtering, but could also 
> be used to do other date filtering or in any application where there need to 
> be multiple filters based on the same single term field. I have an untested 
> implementation of single term filtering and have considered but not yet 
> implemented term set filtering (useful for location based searches) as well. 
> The code here is fairly rough; it works but lacks javadocs and toString() and 
> hashCode() methods etc. I'm posting it here to discover if there is other 
> interest in this feature; I don't mind fixing it up but would hate to go to 
> the effort if it's not going to make it into Lucene.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


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

Reply via email to