Hi All

Thank you for all your suggestions. Some of the recommendations hadn't yet been implemented, as our code base was using older versions of Lucene with reduced capabilities. Thus, far, all the recommendations for fast search have been implemented (e.g. using pagination with searchAfter, DirectoryReader.openIfChanged, avoiding wrapping lucene scoreDoc results, option to disable sorting, etc.).

While, in some environments, search performance has improved significantly, in other larger ones we are unfortunately, still seeing 1 minute - 5 minute search times. For instance, in one site, the total index size is 500GB with 190 million documents indexed. They are running a machine with 24 core and 4 SSD drives to house the indexes. New emails are being added to the indexes at a rate of 10 message/sec.

One area possible area for improvement: Searching is being conducted across several indexes. To accomplish this, on each search, a MultiReader is constructed, that consists of several subreaders created by the DirectoryReader.openIfChangedMethod. Only one of the indexes is updated frequently, the others are never updated. For each search, a new IndexSearcher is created passed the MultiReader in the constructor. From what I've read, MultiReader and IndexSearcher are relatively lightweight and should not impact search performance. Is this correct? Is there a faster way to handle searching across multiple indexes? What is the performance impact of searching across multiple indexes?

Am I correct that using SearchManager can't be used with a MultiReader and NRT? I would appreciate all suggestions on how to optimize our search performance further. Search time has become a usability issue.

Much appreciate

Jamie

---------------------------------------------------------------------
To unsubscribe, e-mail: java-user-unsubscr...@lucene.apache.org
For additional commands, e-mail: java-user-h...@lucene.apache.org

Reply via email to