lucene-java-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "m.harig" <>
Subject Re: optimized searching
Date Tue, 30 Jun 2009 12:38:58 GMT

Thanks eric

in Ian's link, particularly see the section "Don't iterate over morehits
than necessary".

A couple of other things:
1> Loading the entire document just to get a field or two isn't
     very efficient, think about lazy loading (See FieldSelector)
   i done it , but have couple of questions

2> What do you mean when you say "not very good"? Using too
      much memory? Slow?
   yes , of course , it went for java heap space .

here is my code

                IndexReader open =;
                IndexSearcher searcher = new IndexSearcher(open);
		final String fName = "title";
		QueryParser parser = new QueryParser("contents", new StopAnalyzer());
		Query query = parser.parse(qryStr);

		TopDocCollector collector = new TopDocCollector(1000);//, collector);

		FieldSelector selector = new FieldSelector() {
			public FieldSelectorResult accept(String fieldName) {
				return fieldName == fName ? FieldSelectorResult.LOAD
						: FieldSelectorResult.LAZY_LOAD;


		final int totalHits = collector.getTotalHits();
		ScoreDoc[] scoreDocs = collector.topDocs().scoreDocs;

		for (int i = 0; i < totalHits; i++) {
			Document doc = searcher.doc(scoreDocs[i].doc, selector);

			System.out.println(i+" ) "+doc.get("title"));

can you please tune my code to work it faster and better,  is it possible to
display total hits like google , since am using new TopDocCollector(1000);
it won't allow you to pick total hits ?? am i right???

View this message in context:
Sent from the Lucene - Java Users mailing list archive at

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message