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 ca...@apache.org on 2018/11/06 02:57:16 UTC

svn commit: r1845865 - /jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java

Author: catholicon
Date: Tue Nov  6 02:57:16 2018
New Revision: 1845865

URL: http://svn.apache.org/viewvc?rev=1845865&view=rev
Log:
OAK-7613: Taking more time for iterating row of query Result which contain Facets

Modified:
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java?rev=1845865&r1=1845864&r2=1845865&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndex.java Tue Nov  6 02:57:16 2018
@@ -251,6 +251,7 @@ public class LucenePropertyIndex extends
             private boolean noDocs = false;
             private IndexSearcher indexSearcher;
             private int indexNodeId = -1;
+            private LuceneFacetProvider facetProvider = null;
 
             @Override
             protected FulltextResultRow computeNext() {
@@ -261,7 +262,8 @@ public class LucenePropertyIndex extends
                 return endOfData();
             }
 
-            private FulltextResultRow convertToRow(ScoreDoc doc, IndexSearcher searcher, Map<String, String> excerpts,  Facets facets,
+            private FulltextResultRow convertToRow(ScoreDoc doc, IndexSearcher searcher, Map<String, String> excerpts,
+                                                   LuceneFacetProvider facetProvider,
                                                    String explanation) throws IOException {
                 IndexReader reader = searcher.getIndexReader();
                 //TODO Look into usage of field cache for retrieving the path
@@ -293,7 +295,7 @@ public class LucenePropertyIndex extends
                     boolean shouldIncludeForHierarchy = shouldInclude(path, plan);
                     LOG.trace("Matched path {}; shouldIncludeForHierarchy: {}", path, shouldIncludeForHierarchy);
                     return shouldIncludeForHierarchy? new FulltextResultRow(path, doc.score, excerpts,
-                        new LuceneFacetProvider(facets), explanation)
+                            facetProvider, explanation)
                         : null;
                 }
                 return null;
@@ -347,8 +349,12 @@ public class LucenePropertyIndex extends
                             nextBatchSize = (int) Math.min(nextBatchSize * 2L, 100000);
 
                             long f = PERF_LOGGER.start();
-                            Facets facets = FacetHelper.getFacets(searcher, query, docs, plan, indexNode.getDefinition().isSecureFacets());
-                            PERF_LOGGER.end(f, -1, "facets retrieved");
+                            if (facetProvider == null) {
+                                facetProvider = new LuceneFacetProvider(
+                                        FacetHelper.getFacets(searcher, query, docs, plan, indexNode.getDefinition().isSecureFacets())
+                                );
+                                PERF_LOGGER.end(f, -1, "facets retrieved");
+                            }
 
                             Set<String> excerptFields = Sets.newHashSet();
                             for (PropertyRestriction pr : filter.getPropertyRestrictions()) {
@@ -384,7 +390,7 @@ public class LucenePropertyIndex extends
                                     explanation = searcher.explain(query, doc.doc).toString();
                                 }
 
-                                FulltextResultRow row = convertToRow(doc, searcher, excerpts, facets, explanation);
+                                FulltextResultRow row = convertToRow(doc, searcher, excerpts, facetProvider, explanation);
                                 if (row != null) {
                                     queue.add(row);
                                 }