You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by th...@apache.org on 2014/09/25 15:37:05 UTC

svn commit: r1627543 - /jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java

Author: thomasm
Date: Thu Sep 25 13:37:05 2014
New Revision: 1627543

URL: http://svn.apache.org/r1627543
Log:
OAK-2133 Lucene: improved batching and logging

Modified:
    jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java

Modified: jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java?rev=1627543&r1=1627542&r2=1627543&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java (original)
+++ jackrabbit/oak/branches/1.0/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndex.java Thu Sep 25 13:37:05 2014
@@ -302,6 +302,7 @@ public class LuceneIndex implements Full
             private final Deque<LuceneResultRow> queue = Queues.newArrayDeque();
             private final Set<String> seenPaths = Sets.newHashSet();
             private ScoreDoc lastDoc;
+            private int nextBatchSize = LUCENE_QUERY_BATCH_SIZE;
 
             @Override
             protected LuceneResultRow computeNext() {
@@ -355,11 +356,17 @@ public class LuceneIndex implements Full
                     Query query = getQuery(filter, searcher.getIndexReader(),
                             nonFullTextConstraints, analyzer, indexNode.getDefinition());
                     TopDocs docs;
+                    long time = System.currentTimeMillis();
                     if (lastDoc != null) {
-                        docs = searcher.searchAfter(lastDoc, query, LUCENE_QUERY_BATCH_SIZE);
+                        LOG.debug("loading the next {} entries for query {}", nextBatchSize, query);
+                        docs = searcher.searchAfter(lastDoc, query, nextBatchSize);
                     } else {
-                        docs = searcher.search(query, LUCENE_QUERY_BATCH_SIZE);
+                        LOG.debug("loading the first {} entries for query {}", nextBatchSize, query);
+                        docs = searcher.search(query, nextBatchSize);
                     }
+                    time = System.currentTimeMillis() - time;
+                    LOG.debug("... took {} ms", time);
+                    nextBatchSize = (int) Math.min(nextBatchSize * 2L, 100000);
 
                     for (ScoreDoc doc : docs.scoreDocs) {
                         LuceneResultRow row = convertToRow(doc, searcher);