How big is your index?  Is it possible to use a RAMDirectory and run
the search from memory?  A virus scanner or desktop search indexer
might be getting in the way of the I/O calls reading the disk.

I would also play more with getting rid of all string + string code,
either with string builder or making a list of strings, and then using
string.join at the end.

On Fri, Oct 2, 2009 at 11:02 AM, Trevor Watson
<[email protected]> wrote:
> 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() + ",
>> ";
>>            }
>>
>>
>>
>>
>>
>>
>>
>
>



-- 
Michael C. Neel (@ViNull)
http://www.ViNull.com
Microsoft MVP & ASPInsider

Do you FeelTheFunc(.com)?

Reply via email to