This is an automated email from the ASF dual-hosted git repository.

juanpablo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jspwiki.git

commit b2cbbfbe547ec9a4db0f25c9c4f0616b30b3b246
Author: juanpablo <[email protected]>
AuthorDate: Thu Oct 10 23:22:06 2019 +0200

    LuceneSearchProvider now uses an Executor to increase performance on 
searches
    
    see 
http://blog.mikemccandless.com/2019/10/concurrent-query-execution-in-apache.html
 for details
---
 .../src/main/java/org/apache/wiki/search/LuceneSearchProvider.java  | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git 
a/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java 
b/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java
index 5e3f732..5bb618d 100644
--- 
a/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java
+++ 
b/jspwiki-main/src/main/java/org/apache/wiki/search/LuceneSearchProvider.java
@@ -78,6 +78,8 @@ import java.util.Collections;
 import java.util.Date;
 import java.util.List;
 import java.util.Properties;
+import java.util.concurrent.Executor;
+import java.util.concurrent.Executors;
 
 
 /**
@@ -90,6 +92,7 @@ public class LuceneSearchProvider implements SearchProvider {
     protected static final Logger log = 
Logger.getLogger(LuceneSearchProvider.class);
 
     private WikiEngine m_engine;
+    private Executor searchExecutor;
 
     // Lucene properties.
 
@@ -134,6 +137,7 @@ public class LuceneSearchProvider implements SearchProvider 
{
             throws NoRequiredPropertyException, IOException
     {
         m_engine = engine;
+        searchExecutor = Executors.newCachedThreadPool();
 
         m_luceneDirectory = engine.getWorkDir()+File.separator+LUCENE_DIR;
 
@@ -519,7 +523,7 @@ public class LuceneSearchProvider implements SearchProvider 
{
             final String[] queryfields = { LUCENE_PAGE_CONTENTS, 
LUCENE_PAGE_NAME, LUCENE_AUTHOR, LUCENE_ATTACHMENTS, LUCENE_PAGE_KEYWORDS };
             final QueryParser qp = new MultiFieldQueryParser( queryfields, 
getLuceneAnalyzer() );
             final Query luceneQuery = qp.parse( query );
-            final IndexSearcher searcher = new IndexSearcher( reader );
+            final IndexSearcher searcher = new IndexSearcher( reader, 
searchExecutor );
 
             if( (flags & FLAG_CONTEXTS) != 0 ) {
                 highlighter = new Highlighter(new SimpleHTMLFormatter("<span 
class=\"searchmatch\">", "</span>"),

Reply via email to