lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erick Erickson <erickerick...@gmail.com>
Subject Re: Getting
Date Fri, 24 Dec 2010 13:53:54 GMT
>From Hossman's Apache Page:

When starting a new discussion on a mailing list, please do not reply to
an existing message, instead start a fresh email.  Even if you change the
subject line of your email, other mail headers still track which thread
you replied to and your question is "hidden" in that thread and gets less
attention.   It makes following discussions in the mailing list archives
particularly difficult.

Erick

On Fri, Dec 24, 2010 at 7:10 AM, Jawahar Lal <jlal@chambal.com> wrote:

> >Also note that , topdocs.totalhits will always give u total number of
> hits,
> >regardless of the number of score doc u choose to retrieve.
> > topdocs.scoredocs will have min(totalhits, ndocs) docs populated.
>
> Is it Ok use Integer.MaxValue as nDoc ?
>
> On 24 December 2010 17:13, Jawahar Lal <jlal@chambal.com> wrote:
>
> > I open a IndexReader. I want to see how many docs are indexed, to get
> this
> > count I used
> >
> > objReader.maxDoc()  ... its returning me 0.
> >
> > How can I get the total no. of docs in index?
> >
> >
> > On 24 December 2010 16:36, Jawahar Lal <jlal@chambal.com> wrote:
> >
> >> Thanks Umesh
> >>
> >>  I want to know more about Filters, how to use that using lucene 3.0.3
> >>
> >> Can I get links to learn how/when to use filters.
> >>
> >> jawahar
> >>
> >>
> >> On 24 December 2010 16:25, Umesh Prasad <umesh.iitk@gmail.com> wrote:
> >>
> >>> Yes.
> >>>
> >>> Also note that , topdocs.totalhits will always give u total number of
> >>> hits,
> >>> regardless of the number of score doc u choose to retrieve.
> >>>  topdocs.scoredocs will have min(totalhits, ndocs) docs populated.
> >>>
> >>>
> >>> On Fri, Dec 24, 2010 at 2:48 PM, Jawahar Lal <jlal@chambal.com> wrote:
> >>>
> >>> > ok, I understand.
> >>> >
> >>> > It means, that we have to fetch total no. of docs i.e.
> >>> >
> >>> > Suppose we need to show 100 docs per page
> >>> >
> >>> > Page No.     NDocs       No. of documents to be shown on Page
> >>> > 1                  100            0-99
> >>> > 2                   200           100-199
> >>> > 3                   300            200-299  & so on...
> >>> >
> >>> >
> >>> >
> >>> >
> >>> >
> >>> > On 24 December 2010 12:35, Umesh Prasad <umesh.iitk@gmail.com>
> wrote:
> >>> >
> >>> > > Hi Jawahar,
> >>> > >   http://search-lucene.com/m/duTpc14AmzV
> >>> > > See Uwe's reply.
> >>> > >
> >>> > >
> >>> > >
> >>> > > Regards
> >>> > > Umesh
> >>> > >
> >>> > > PS: I would use search-lucene.com to 1st check if a solution is
> >>> posted
> >>> > > already. It is really good.
> >>> > >
> >>> > > ------------------------
> >>> > > QUOTED UWE's reply
> >>> > > ----------------------
> >>> > >
> >>> > > To get the second page,
> >>> > > Take:
> >>> > > int hitsPerPage = 10;
> >>> > > int pageOffset = 10;
> >>> > > TopDocCollector collector = new TopDocCollector(hitsPerPage +
> >>> > pageOffset);
> >>> > >
> >>> > > For page third page take int pageOffset = 20; and so on
> >>> > >
> >>> > > After that your results are in hits[], for the first page in [0]
to
> >>> [9],
> >>> > > the
> >>> > > second page in [10] to [19] and so on:
> >>> > >
> >>> > > To display use something like:
> >>> > > For (int i=pageOffset; Math.min(hitsPerPage + pageOffset,
> >>> > > collector.topDocs().totalhits); i++)
> >>> > >
> >>> > > In general, you cannot retrieve a range directly, you can only
> >>> retrieve
> >>> > the
> >>> > > top docs. As most people will not go beyond say page 10 when
> >>> searching,
> >>> > you
> >>> > > have no memory problem, as scoreDocs will contain at most 100
doc
> >>> ids.
> >>> > >
> >>> > > ---------------
> >>> > > -------------------
> >>> > >
> >>> > >
> >>> > > On Fri, Dec 24, 2010 at 10:40 AM, Jawahar Lal <jlal@chambal.com>
> >>> wrote:
> >>> > >
> >>> > > > Hi,
> >>> > > >
> >>> > > >  I search for an query. Total searched records are 5000.
I only
> >>> shows
> >>> > 100
> >>> > > > records on one page. So I passed 100 as nDocs.
> >>> > > >
> >>> > > > I write the code in this way.
> >>> > > >
> >>> > > >           IndexSearcher searcher = new
> >>> > IndexSearcher(FSDirectory.open(new
> >>> > > > File(path)));
> >>> > > >
> >>> > > >            Query query = new QueryParser(Version.LUCENE_30,
> >>> "field1",
> >>> > new
> >>> > > > StandardAnalyzer(Version.LUCENE_30)).parse("query");
> >>> > > >            Query query1 = new QueryParser(Version.LUCENE_30,
> >>> "field2",
> >>> > > new
> >>> > > > StandardAnalyzer(Version.LUCENE_30)).parse("query2");
> >>> > > >            BooleanQuery lucBoolQueryOTHER = new BooleanQuery();
> >>> > > >            lucBoolQueryOTHER.add(query, Occur.MUST);
> >>> > > >            lucBoolQueryOTHER.add(query1, Occur.MUST);
> >>> > > >
> >>> > > >            TopDocs hits=searcher.search(query, null, 100);
> >>> > > >
> >>> > > >            System.err.println("Total searched " +
> hits.totalHits);
> >>>   >>
> >>> > > > 5000
> >>> > > >            System.err.println("Total docs " +
> >>> hits.scoreDocs.length);
> >>> >  >>
> >>> > > > 100
> >>> > > >
> >>> > > > // The code to print 100 records on first page
> >>> > > >            for(int i=0;i<hits.scoreDocs.length;i++){
> >>> > > >
> >>> > > >
> >>> > > >
> >>> > >
> >>> >
> >>>
> System.out.println(searcher.doc(hits.scoreDocs[i].doc).getField("filename"));
> >>> > > >            }
> >>> > > >
> >>> > > > it worked fine.
> >>> > > >
> >>> > > > // Now I want to show all next search documents on Second
> >>> Pages...when
> >>> > I
> >>> > > > tried in this way, I got the error.
> >>> > > >            for(int i=100;i<hits.totalHits;i++){
> >>> > > >
> >>> > > >
> >>> > > >
> >>> > >
> >>> >
> >>>
> System.out.println(searcher.doc(hits.scoreDocs[i].doc).getField("filename"));
> >>> > > >            }
> >>> > > >
> >>> > > >            searcher.close();
> >>> > > >
> >>> > > > java.lang.ArrayIndexOutOfBoundsException: 100
> >>> > > >        at Test.searchIndex(Test.java:96)
> >>> > > >        at Test.main(Test.java:54)
> >>> > > >
> >>> > > > Would need to perform searching again with different parameters
> to
> >>> > fetch
> >>> > > > next bunch of records ?
> >>> > > >
> >>> > > >
> >>> > > >
> >>> > > >
> >>> > > > Thanks
> >>> > > >
> >>> > >
> >>> > >
> >>> > >
> >>> > > --
> >>> > > ---
> >>> > > Thanks & Regards
> >>> > > Umesh Prasad
> >>> > >
> >>> >
> >>>
> >>>
> >>>
> >>> --
> >>> ---
> >>> Thanks & Regards
> >>> Umesh Prasad
> >>>
> >>
> >>
> >
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message