Hi, All,
For the filter issue, my idea is to completely get rid of the filter
interface. Can we not use the HitCollector and have that to do the filtering
work?
I am in the process of writing a simpler engine based on Lucene source code.
I don't mind re-inventing the wheel, as I feel frustrated with the relations
among Query, Searcher, Scorer, etc.
I have done the initial round of my code already and it is in production and
works great. Basically, the search interfaces will be like the following:
public interface IndexSearcher
{
public void search(HitCollector hc, int maxDocNum)
throws IOException;
}
public interface HitCollector
{
public void collect(int doc, float score);
// the total hits that meet the search criteria,
// could be way bigger than the actual ScoreDocs
// we record in the HitQueue
public int getTotalHits();
public ScoreDoc[] getScoreDocs();
public int getNumScoreDocs();
// max number of ScoreDocs this hit collector could hold
public int getCapacity();
}
I have refactored the Scorers in Lucene to be just Searchers. Because the
scorer is the actual searcher that does the ranking, right?
I will publish my code using an open source license this year.
Cheers,
Jian Chen
Lead Developer, Seattle Lighting
On 3/10/06, eks dev <[EMAIL PROTECTED]> wrote:
>
> It looks to me everybody agrees here, not? If yes, it
> would be really usefull if somebody with commit rights
> could add 1) and 2) to the trunk (these patches
> practically allready exist).
>
> It is not invasive change and there are no problems
> with compatibility. Also, I have noticed a lot of
> people trying to "hack in" better Filter support using
> Pauls Patches from JIRA.
>
> That would open a window for some smart code to get
> commited into Lucene core.
>
> Just have a look at Filtering support in Solr,
> beautiful, but unfortunately also "hacked" just to
> overcome BitSet on Filter.
>
>
>
>
> --- Chris Hostetter <[EMAIL PROTECTED]> wrote:
>
> > 1) commit DocNrSkipper interface to the core code
> > base
> > 2) add the following method declaration to the
> > Filter class...
> > public DocNrSkipper getSkipper(IndexReader)
> > throws IOException
> > ...impliment this method by calling bits, and
> > returning an instance
> > of BitSetSortedIntList
> > 3) indicate that Filter.bits() is deprecated.
> > 4) change all existing calls to Filter.bits() in
> > the core lucene code
> > base to call Filter.getSkipper and do whatever
> > iterating is
> > neccessary.
> > 5) gradually reimpliment all of the concrete
> > instances of Filter in
> > the core lucene code base so they override the
> > getSkipper method
> > with something that returns a more "iterator"
> > style DocNrSkipper,
> > and impliment their bits() method to use the
> > DocNrSkipper from the
> > new getSkipper() method to build up the bit set
> > if clients call it
> > directly.
> > 6) wait a suitable amount of time.
> > 7) remove Filter.bits() and all of the concrete
> > implimentations from the
> > lucene core.
> >
> >
> >
> >
> > -Hoss
> >
> >
> >
>
>
>
> ___________________________________________________________
> To help you stay safe and secure online, we've developed the all new
> Yahoo! Security Centre. http://uk.security.yahoo.com
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>