I had done StringBuilder.Append for the HitsIterator. It actually increased the time by about 5 seconds. It might be just computer issue at that time, however, it didn't seem to be beneficial time-wise.


Gerald Pape wrote:
Hi, would start with using StringBuilder instead of string, maybe this gives some performance boost.





From:   Trevor Watson <[email protected]>
To:     [email protected]
Date:   02.10.2009 16:42
Subject:        Alternative to looping through Hits



I am currently attempting to create a comma separated list of IDs from a given Hits collection.

However, when we end up processing 6,000 or more hits, it takes 25-30 seconds per collection. I've been trying to find a faster way to change the search results to the comma separated list. Do any of you have any advice? Thanks in advance.

Trevor Watson


My current code looks like

Lucene.Net.Search.Searcher search = new Lucene.Net.Search.IndexSearcher(string.Format("c:\\sv_index\\" + jobId.ToString()));
            Lucene.Net.Search.Hits hits = search.Search(query);

            string docIds = "";
            totalDocuments = hits.Length();

// Test #1 Lucene.Net.Search.HitIterator hi = (Lucene.Net.Search.HitIterator)hits.Iterator();
            while (hi.MoveNext())
docIds += ((Lucene.Net.Search.Hit)hi.Current).GetDocument().GetField("DocumentId").StringValue()
+ ", ";

          // Test #2
            for (int iCount = 0; iCount < totalDocuments; iCount++)
            {
                Lucene.Net.Documents.Document docHit = hits.Doc(iCount);

docIds += docHit.GetField("DocumentId").StringValue() + ", ";
            }







Reply via email to