lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "paul.elschot (JIRA)" <j...@apache.org>
Subject [jira] Commented: (LUCENE-584) Decouple Filter from BitSet
Date Mon, 26 Jun 2006 22:23:30 GMT
    [ http://issues.apache.org/jira/browse/LUCENE-584?page=comments#action_12417917 ] 

paul.elschot commented on LUCENE-584:
-------------------------------------

I hope I got all the attachments right, please holler in case something does not patch or
compile cleanly.

Some questions/remarks:

- When IndexSearcher gets a BitSet from a Filter, it will not use skipTo() on the Scorer
of the Query being filtered.
This still allows to use the 1.4 BooleanScorer until Filter.getBits() is removed.

- Ok. not to add match() method(s) to Searcher/Searchable ?

- BitSetIterator of SOLR-15 could implement a Matcher, and perhaps to be added to org.apache.lucene.util
?

- Matcher as superclass of Scorer opens possibility to add BooleanQuery.add(Filter) method.
This also needs the addition of required Matchers to ConjunctionScorer and the addition of
prohibited Matchers at ReqExclScorer/DisjunctionScorer.
Doing this filtering in ConjunctionScorer/ReqExclScorer will probably reduce the number of
method calls for filtering.
Once such an addition is done to BooleanQuery, the filtering methods in IndexSearcher could
be deprecated in favour of BooleanQuery.add(Filter).

Regards,
Paul Elschot


> Decouple Filter from BitSet
> ---------------------------
>
>          Key: LUCENE-584
>          URL: http://issues.apache.org/jira/browse/LUCENE-584
>      Project: Lucene - Java
>         Type: Improvement

>   Components: Search
>     Versions: 2.0.1
>     Reporter: Peter Schäfer
>     Priority: Minor
>  Attachments: BitsMatcher.java, Filter-20060626.patch, HitCollector-20060626.patch, IndexSearcher-20060626.patch,
MatchCollector.java, Matcher.java, Scorer-20060626.patch, Searcher-20060626.patch, SortedVIntList.java,
TestSortedVIntList.java
>
> {code}
> package org.apache.lucene.search;
> public abstract class Filter implements java.io.Serializable 
> {
>   public abstract AbstractBitSet bits(IndexReader reader) throws IOException;
> }
> public interface AbstractBitSet 
> {
>   public boolean get(int index);
> }
> {code}
> It would be useful if the method =Filter.bits()= returned an abstract interface, instead
of =java.util.BitSet=.
> Use case: there is a very large index, and, depending on the user's privileges, only
a small portion of the index is actually visible.
> Sparsely populated =java.util.BitSet=s are not efficient and waste lots of memory. It
would be desirable to have an alternative BitSet implementation with smaller memory footprint.
> Though it _is_ possibly to derive classes from =java.util.BitSet=, it was obviously not
designed for that purpose.
> That's why I propose to use an interface instead. The default implementation could still
delegate to =java.util.BitSet=.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: java-dev-help@lucene.apache.org


Mime
View raw message