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 to...@apache.org on 2018/09/25 12:24:18 UTC

svn commit: r1841926 [5/14] - in /jackrabbit/oak/trunk: oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/ oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/benchmark/util/ oak-benchmarks/src/main/java/org/apache/jackrabbit/oak/scal...

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/DocumentQueue.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/DocumentQueue.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/DocumentQueue.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/DocumentQueue.java Tue Sep 25 12:24:15 2018
@@ -37,11 +37,10 @@ import com.google.common.collect.ArrayLi
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Lists;
 import com.google.common.util.concurrent.Striped;
-
 import org.apache.jackrabbit.oak.commons.PerfLogger;
 import org.apache.jackrabbit.oak.commons.concurrent.NotifyingFutureTask;
-import org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode;
 import org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexNode;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriter;
 import org.apache.jackrabbit.oak.stats.CounterStats;
 import org.apache.jackrabbit.oak.stats.MeterStats;
@@ -243,9 +242,9 @@ public class DocumentQueue implements Cl
             return;
         }
 
-        IndexNode indexNode = tracker.acquireIndexNode(indexPath);
+        LuceneIndexNode indexNode = tracker.acquireIndexNode(indexPath);
         if (indexNode == null) {
-            log.debug("No IndexNode found for index [{}].", indexPath);
+            log.debug("No LuceneIndexNode found for index [{}].", indexPath);
             return;
         }
 
@@ -254,7 +253,7 @@ public class DocumentQueue implements Cl
             boolean docAdded = false;
             for (LuceneDoc doc : docs) {
                 if (writer == null) {
-                    //IndexDefinition per IndexNode might have changed and local
+                    //IndexDefinition per LuceneIndexNode might have changed and local
                     //indexing is disabled. Ignore
                     log.debug("No local IndexWriter found for index [{}]. Skipping index " +
                             "entry for [{}]", indexPath, doc.docPath);

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/ExternalIndexObserver.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/ExternalIndexObserver.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/ExternalIndexObserver.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/ExternalIndexObserver.java Tue Sep 25 12:24:15 2018
@@ -22,9 +22,9 @@ package org.apache.jackrabbit.oak.plugin
 import java.util.Set;
 
 import com.google.common.collect.Sets;
-import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition;
 import org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker;
 import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneDocumentMaker;
+import org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition;
 import org.apache.jackrabbit.oak.plugins.observation.Filter;
 import org.apache.jackrabbit.oak.spi.commit.CommitContext;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LocalIndexObserver.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LocalIndexObserver.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LocalIndexObserver.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LocalIndexObserver.java Tue Sep 25 12:24:15 2018
@@ -25,11 +25,10 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.apache.jackrabbit.oak.stats.StatisticsProvider;
 import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class LocalIndexObserver implements Observer{
+public class LocalIndexObserver implements Observer {
     private final Logger log = LoggerFactory.getLogger(getClass());
     private final DocumentQueue docQueue;
 

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LocalIndexWriterFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LocalIndexWriterFactory.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LocalIndexWriterFactory.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LocalIndexWriterFactory.java Tue Sep 25 12:24:15 2018
@@ -21,13 +21,13 @@ package org.apache.jackrabbit.oak.plugin
 
 import java.io.IOException;
 
-import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriter;
-import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterFactory;
+import org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition;
+import org.apache.jackrabbit.oak.plugins.index.search.spi.editor.FulltextIndexWriterFactory;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.lucene.index.IndexableField;
 
-public class LocalIndexWriterFactory implements LuceneIndexWriterFactory {
+public class LocalIndexWriterFactory implements FulltextIndexWriterFactory {
     private final LuceneDocumentHolder documentHolder;
     private final String indexPath;
 

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LuceneDocumentHolder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LuceneDocumentHolder.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LuceneDocumentHolder.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LuceneDocumentHolder.java Tue Sep 25 12:24:15 2018
@@ -33,7 +33,7 @@ import org.slf4j.LoggerFactory;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
-public class LuceneDocumentHolder implements JournalProperty{
+public class LuceneDocumentHolder implements JournalProperty {
     private static final Logger log = LoggerFactory.getLogger(LuceneDocumentHolder.class);
     public static final String NAME = "luceneDocs";
 

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LuceneJournalPropertyBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LuceneJournalPropertyBuilder.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LuceneJournalPropertyBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/LuceneJournalPropertyBuilder.java Tue Sep 25 12:24:15 2018
@@ -34,7 +34,7 @@ import org.jetbrains.annotations.Nullabl
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-class LuceneJournalPropertyBuilder implements JournalPropertyBuilder<LuceneDocumentHolder>{
+class LuceneJournalPropertyBuilder implements JournalPropertyBuilder<LuceneDocumentHolder> {
     private final static Logger log = LoggerFactory.getLogger(LuceneJournalPropertyBuilder.class);
     //Use HashMultimap to ensure that indexPath is not duplicated per node path
     private final Multimap<String, String> indexedNodes = HashMultimap.create();

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTDirectoryFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTDirectoryFactory.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTDirectoryFactory.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTDirectoryFactory.java Tue Sep 25 12:24:15 2018
@@ -22,7 +22,7 @@ package org.apache.jackrabbit.oak.plugin
 import java.io.File;
 import java.io.IOException;
 
-import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition;
+import org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition;
 import org.apache.lucene.store.Directory;
 
 interface NRTDirectoryFactory {

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndex.java Tue Sep 25 12:24:15 2018
@@ -31,10 +31,12 @@ import com.google.common.collect.Immutab
 import com.google.common.collect.Lists;
 import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier;
-import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexDefinition;
 import org.apache.jackrabbit.oak.plugins.index.lucene.reader.LuceneIndexReader;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.IndexWriterUtils;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriter;
+import org.apache.jackrabbit.oak.plugins.index.search.update.IndexUpdateListener;
+import org.apache.jackrabbit.oak.plugins.index.search.update.ReaderRefreshPolicy;
 import org.apache.jackrabbit.oak.stats.HistogramStats;
 import org.apache.jackrabbit.oak.stats.MeterStats;
 import org.apache.jackrabbit.oak.stats.StatisticsProvider;
@@ -65,7 +67,7 @@ public class NRTIndex implements Closeab
      */
     public static final String NRT_DIR_PREFIX = "nrt-";
 
-    private final IndexDefinition definition;
+    private final LuceneIndexDefinition definition;
     private final IndexCopier indexCopier;
     private final IndexUpdateListener refreshPolicy;
 
@@ -90,7 +92,7 @@ public class NRTIndex implements Closeab
     private final boolean assertAllReadersClosed;
 
 
-    public NRTIndex(IndexDefinition definition, IndexCopier indexCopier,
+    public NRTIndex(LuceneIndexDefinition definition, IndexCopier indexCopier,
                     IndexUpdateListener refreshPolicy, @Nullable NRTIndex previous,
                     StatisticsProvider statisticsProvider, NRTDirectoryFactory directoryFactory,
                     boolean assertAllReadersClosed) {

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndexFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndexFactory.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndexFactory.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/hybrid/NRTIndexFactory.java Tue Sep 25 12:24:15 2018
@@ -28,7 +28,11 @@ import java.util.concurrent.TimeUnit;
 import com.google.common.collect.LinkedListMultimap;
 import com.google.common.collect.ListMultimap;
 import org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier;
-import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexDefinition;
+import org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition;
+import org.apache.jackrabbit.oak.plugins.index.search.update.IndexUpdateListener;
+import org.apache.jackrabbit.oak.plugins.index.search.update.RefreshOnWritePolicy;
+import org.apache.jackrabbit.oak.plugins.index.search.update.TimedRefreshPolicy;
 import org.apache.jackrabbit.oak.stats.Clock;
 import org.apache.jackrabbit.oak.stats.StatisticsProvider;
 import org.apache.lucene.store.Directory;
@@ -44,8 +48,8 @@ import static com.google.common.base.Pre
 public class NRTIndexFactory implements Closeable{
     /**
      * Maximum numbers of NRTIndex to keep at a time. At runtime for a given index
-     * /oak:index/fooIndex at max 2 IndexNode would be opened at a time and those 2
-     * IndexNode would keep reference to at max 3 NRT Indexes
+     * /oak:index/fooIndex at max 2 LuceneIndexNode would be opened at a time and those 2
+     * LuceneIndexNode would keep reference to at max 3 NRT Indexes
      */
     private static final int MAX_INDEX_COUNT = 3;
     private static final int REFRESH_DELTA_IN_SECS = Integer.getInteger("oak.lucene.refreshDeltaSecs", 1);
@@ -74,7 +78,7 @@ public class NRTIndexFactory implements
     //This would not be invoked concurrently
     // but still mark it synchronized for safety
     @Nullable
-    public synchronized NRTIndex createIndex(IndexDefinition definition) {
+    public synchronized NRTIndex createIndex(LuceneIndexDefinition definition) {
         if (!(definition.isNRTIndexingEnabled() || definition.isSyncIndexingEnabled())){
             return null;
         }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/BucketSwitcher.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/BucketSwitcher.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/BucketSwitcher.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/BucketSwitcher.java Tue Sep 25 12:24:15 2018
@@ -22,13 +22,12 @@ package org.apache.jackrabbit.oak.plugin
 import java.util.Objects;
 
 import com.google.common.collect.Iterables;
-import com.google.common.primitives.Ints;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 
-import static org.apache.jackrabbit.oak.plugins.index.lucene.property.HybridPropertyIndexUtil.PROP_HEAD_BUCKET;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.property.HybridPropertyIndexUtil.PROP_ASYNC_INDEXED_TO_TIME_AT_SWITCH;
+import static org.apache.jackrabbit.oak.plugins.index.lucene.property.HybridPropertyIndexUtil.PROP_HEAD_BUCKET;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.property.HybridPropertyIndexUtil.PROP_PREVIOUS_BUCKET;
 
 /**

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/HybridPropertyIndexLookup.java Tue Sep 25 12:24:15 2018
@@ -114,13 +114,13 @@ public class HybridPropertyIndexLookup {
     }
 
     private static Iterable<String> queryUnique(Filter filter, String indexName, NodeState propIndexRootNode,
-                                         String propIdxNodeName, Set<String> values) {
+                                                String propIdxNodeName, Set<String> values) {
         UniqueEntryStoreStrategy s = new UniqueEntryStoreStrategy(propIdxNodeName);
         return s.query(filter, indexName, propIndexRootNode, values);
     }
 
     private Iterable<String> querySimple(Filter filter, String indexName, NodeState propIndexNode,
-                                                Set<String> values) {
+                                         Set<String> values) {
         return Iterables.concat(
                 queryBucket(filter, indexName, propIndexNode, PROP_HEAD_BUCKET, values),
                 queryBucket(filter, indexName, propIndexNode, PROP_PREVIOUS_BUCKET, values)

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/LuceneIndexPropertyQuery.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/LuceneIndexPropertyQuery.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/LuceneIndexPropertyQuery.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/LuceneIndexPropertyQuery.java Tue Sep 25 12:24:15 2018
@@ -23,8 +23,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.jackrabbit.oak.plugins.index.lucene.IndexNode;
 import org.apache.jackrabbit.oak.plugins.index.lucene.IndexTracker;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexNode;
 import org.apache.jackrabbit.oak.plugins.index.lucene.util.PathStoredFieldVisitor;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.Term;
@@ -50,7 +50,7 @@ public class LuceneIndexPropertyQuery im
     @Override
     public Iterable<String> getIndexedPaths(String propertyRelativePath, String value) {
         List<String> indexPaths = new ArrayList<>(2);
-        IndexNode indexNode = tracker.acquireIndexNode(indexPath);
+        LuceneIndexNode indexNode = tracker.acquireIndexNode(indexPath);
         if (indexNode != null) {
             try {
                 TermQuery query = new TermQuery(new Term(propertyRelativePath, value));

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/PropertyIndexUpdateCallback.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/PropertyIndexUpdateCallback.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/PropertyIndexUpdateCallback.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/property/PropertyIndexUpdateCallback.java Tue Sep 25 12:24:15 2018
@@ -27,11 +27,11 @@ import javax.jcr.PropertyType;
 import org.apache.jackrabbit.oak.api.CommitFailedException;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
-import org.apache.jackrabbit.oak.plugins.index.lucene.PropertyDefinition;
-import org.apache.jackrabbit.oak.plugins.index.lucene.PropertyUpdateCallback;
 import org.apache.jackrabbit.oak.plugins.index.property.ValuePattern;
 import org.apache.jackrabbit.oak.plugins.index.property.strategy.ContentMirrorStoreStrategy;
 import org.apache.jackrabbit.oak.plugins.index.property.strategy.UniqueEntryStoreStrategy;
+import org.apache.jackrabbit.oak.plugins.index.search.PropertyDefinition;
+import org.apache.jackrabbit.oak.plugins.index.search.PropertyUpdateCallback;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyValues;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -75,7 +75,7 @@ public class PropertyIndexUpdateCallback
 
     @Override
     public void propertyUpdated(String nodePath, String propertyRelativePath, PropertyDefinition pd,
-                                @Nullable PropertyState before,  @Nullable PropertyState after) {
+                                @Nullable PropertyState before, @Nullable PropertyState after) {
         if (!pd.sync) {
             return;
         }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactory.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactory.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/DefaultIndexReaderFactory.java Tue Sep 25 12:24:15 2018
@@ -26,9 +26,10 @@ import java.util.List;
 
 import com.google.common.collect.ImmutableList;
 import org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier;
-import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexDefinition;
 import org.apache.jackrabbit.oak.plugins.index.lucene.directory.OakDirectory;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.MultiplexersLucene;
+import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants;
 import org.apache.jackrabbit.oak.spi.mount.Mount;
 import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -37,10 +38,6 @@ import org.apache.lucene.store.Directory
 import org.apache.lucene.store.FSDirectory;
 import org.jetbrains.annotations.Nullable;
 
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.INDEX_DATA_CHILD_NAME;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.PERSISTENCE_FILE;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.PERSISTENCE_NAME;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.PERSISTENCE_PATH;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.SUGGEST_DATA_CHILD_NAME;
 
 public class DefaultIndexReaderFactory implements LuceneIndexReaderFactory {
@@ -53,18 +50,18 @@ public class DefaultIndexReaderFactory i
     }
 
     @Override
-    public List<LuceneIndexReader> createReaders(IndexDefinition definition, NodeState defnState,
+    public List<LuceneIndexReader> createReaders(LuceneIndexDefinition definition, NodeState defnState,
                                                  String indexPath) throws IOException {
         if (!mountInfoProvider.hasNonDefaultMounts()) {
             LuceneIndexReader reader = createReader(definition, defnState, indexPath,
-                    INDEX_DATA_CHILD_NAME, SUGGEST_DATA_CHILD_NAME);
+                    FulltextIndexConstants.INDEX_DATA_CHILD_NAME, SUGGEST_DATA_CHILD_NAME);
             return reader != null ? ImmutableList.of(reader) : Collections.<LuceneIndexReader>emptyList();
         } else {
             return createMountedReaders(definition, defnState, indexPath);
         }
     }
 
-    private List<LuceneIndexReader> createMountedReaders(IndexDefinition definition, NodeState defnState, String
+    private List<LuceneIndexReader> createMountedReaders(LuceneIndexDefinition definition, NodeState defnState, String
             indexPath) throws IOException {
         ImmutableList.Builder<LuceneIndexReader> readers = ImmutableList.builder();
         LuceneIndexReader reader = createReader(mountInfoProvider.getDefaultMount(), definition, defnState, indexPath);
@@ -83,14 +80,14 @@ public class DefaultIndexReaderFactory i
     }
 
     @Nullable
-    private LuceneIndexReader createReader(Mount mount, IndexDefinition definition, NodeState defnNodeState,
+    private LuceneIndexReader createReader(Mount mount, LuceneIndexDefinition definition, NodeState defnNodeState,
                                            String indexPath) throws IOException {
         return createReader(definition, defnNodeState, indexPath, MultiplexersLucene.getIndexDirName(mount),
                 MultiplexersLucene.getSuggestDirName(mount));
     }
 
     @Nullable
-    private LuceneIndexReader createReader(IndexDefinition definition, NodeState defnNodeState, String indexPath,
+    private LuceneIndexReader createReader(LuceneIndexDefinition definition, NodeState defnNodeState, String indexPath,
                                            String indexDataNodeName, String suggestDataNodeName) throws IOException {
         Directory directory = null;
         NodeState data = defnNodeState.getChildNode(indexDataNodeName);
@@ -99,8 +96,9 @@ public class DefaultIndexReaderFactory i
             if (cloner != null) {
                 directory = cloner.wrapForRead(indexPath, definition, directory, indexDataNodeName);
             }
-        } else if (PERSISTENCE_FILE.equalsIgnoreCase(defnNodeState.getString(PERSISTENCE_NAME))) {
-            String path = defnNodeState.getString(PERSISTENCE_PATH);
+        } else if (FulltextIndexConstants.PERSISTENCE_FILE.equalsIgnoreCase(
+                defnNodeState.getString(FulltextIndexConstants.PERSISTENCE_NAME))) {
+            String path = defnNodeState.getString(FulltextIndexConstants.PERSISTENCE_PATH);
             if (path != null && new File(path).exists()) {
                 directory = FSDirectory.open(new File(path));
             }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/LuceneIndexReaderFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/LuceneIndexReaderFactory.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/LuceneIndexReaderFactory.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/reader/LuceneIndexReaderFactory.java Tue Sep 25 12:24:15 2018
@@ -22,10 +22,10 @@ package org.apache.jackrabbit.oak.plugin
 import java.io.IOException;
 import java.util.List;
 
-import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexDefinition;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 
 public interface LuceneIndexReaderFactory {
 
-    List<LuceneIndexReader> createReaders(IndexDefinition definition, NodeState definitionState, String indexPath) throws IOException;
+    List<LuceneIndexReader> createReaders(LuceneIndexDefinition definition, NodeState definitionState, String indexPath) throws IOException;
 }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/CRTokenizer.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/CRTokenizer.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/CRTokenizer.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/CRTokenizer.java Tue Sep 25 12:24:15 2018
@@ -24,7 +24,7 @@ import org.apache.lucene.analysis.util.C
 import org.apache.lucene.util.Version;
 
 /**
- * A {@link org.apache.lucene.analysis.util.CharTokenizer} dividing tokens at <code>\n</code>.
+ * A {@link CharTokenizer} dividing tokens at <code>\n</code>.
  *
  * This should be deprecated if / once LUCENE-5833 fix gets included in the Lucene version we ship.
  */

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/CompoundWordTokenFilterBase.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/CompoundWordTokenFilterBase.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/CompoundWordTokenFilterBase.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/CompoundWordTokenFilterBase.java Tue Sep 25 12:24:15 2018
@@ -25,7 +25,6 @@ import org.apache.lucene.analysis.tokena
 import org.apache.lucene.analysis.tokenattributes.OffsetAttribute;
 import org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute;
 import org.apache.lucene.analysis.util.CharArraySet;
-import org.apache.lucene.util.AttributeSource;
 import org.apache.lucene.util.Version;
 
 /**
@@ -68,7 +67,7 @@ public abstract class CompoundWordTokenF
   protected final OffsetAttribute offsetAtt = addAttribute(OffsetAttribute.class);
   private final PositionIncrementAttribute posIncAtt = addAttribute(PositionIncrementAttribute.class);
   
-  private AttributeSource.State current;
+  private State current;
 
   protected CompoundWordTokenFilterBase(Version matchVersion, TokenStream input, CharArraySet dictionary, boolean onlyLongestMatch) {
     this(matchVersion, input,dictionary,DEFAULT_MIN_WORD_SIZE,DEFAULT_MIN_SUBWORD_SIZE,DEFAULT_MAX_SUBWORD_SIZE, onlyLongestMatch);

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/ConfigUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/ConfigUtil.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/ConfigUtil.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/ConfigUtil.java Tue Sep 25 12:24:15 2018
@@ -19,61 +19,5 @@
 
 package org.apache.jackrabbit.oak.plugins.index.lucene.util;
 
-import java.util.Collections;
-
-import com.google.common.primitives.Ints;
-import org.apache.jackrabbit.JcrConstants;
-import org.apache.jackrabbit.oak.api.Blob;
-import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.spi.state.NodeState;
-
-import static com.google.common.base.Preconditions.checkArgument;
-
-public class ConfigUtil {
-
-    public static boolean getOptionalValue(NodeState definition, String propName, boolean defaultVal){
-        PropertyState ps = definition.getProperty(propName);
-        return ps == null ? defaultVal : ps.getValue(Type.BOOLEAN);
-    }
-
-    public static int getOptionalValue(NodeState definition, String propName, int defaultVal){
-        PropertyState ps = definition.getProperty(propName);
-        return ps == null ? defaultVal : Ints.checkedCast(ps.getValue(Type.LONG));
-    }
-
-    public static String getOptionalValue(NodeState definition, String propName, String defaultVal){
-        PropertyState ps = definition.getProperty(propName);
-        return ps == null ? defaultVal : ps.getValue(Type.STRING);
-    }
-
-    public static float getOptionalValue(NodeState definition, String propName, float defaultVal){
-        PropertyState ps = definition.getProperty(propName);
-        return ps == null ? defaultVal : ps.getValue(Type.DOUBLE).floatValue();
-    }
-
-    public static double getOptionalValue(NodeState definition, String propName, double defaultVal){
-        PropertyState ps = definition.getProperty(propName);
-        return ps == null ? defaultVal : ps.getValue(Type.DOUBLE);
-    }
-
-    public static String getPrimaryTypeName(NodeState nodeState) {
-        PropertyState ps = nodeState.getProperty(JcrConstants.JCR_PRIMARYTYPE);
-        return (ps == null) ? JcrConstants.NT_BASE : ps.getValue(Type.NAME);
-    }
-
-    public static Iterable<String> getMixinNames(NodeState nodeState) {
-        PropertyState ps = nodeState.getProperty(JcrConstants.JCR_MIXINTYPES);
-        return (ps == null) ? Collections.<String>emptyList() : ps.getValue(Type.NAMES);
-    }
-
-    /**
-     * Assumes that given state is of type nt:file and then reads
-     * the jcr:content/@jcr:data property to get the binary content
-     */
-    public static Blob getBlob(NodeState state, String resourceName){
-        NodeState contentNode = state.getChildNode(JcrConstants.JCR_CONTENT);
-        checkArgument(contentNode.exists(), "Was expecting to find jcr:content node to read resource %s", resourceName);
-        return contentNode.getProperty(JcrConstants.JCR_DATA).getValue(Type.BINARY);
-    }
+public class ConfigUtil extends org.apache.jackrabbit.oak.plugins.index.search.util.ConfigUtil {
 }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FacetHelper.java Tue Sep 25 12:24:15 2018
@@ -23,7 +23,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.jackrabbit.oak.plugins.index.lucene.FieldNames;
+import org.apache.jackrabbit.oak.plugins.index.search.FieldNames;
 import org.apache.jackrabbit.oak.spi.query.QueryConstants;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -87,7 +87,6 @@ public class FacetHelper {
         return facets;
     }
 
-
     public static String parseFacetField(String columnName) {
         return columnName.substring(QueryConstants.REP_FACET.length() + 1, columnName.length() - 1);
     }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FilteredSortedSetDocValuesFacetCounts.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FilteredSortedSetDocValuesFacetCounts.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FilteredSortedSetDocValuesFacetCounts.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FilteredSortedSetDocValuesFacetCounts.java Tue Sep 25 12:24:15 2018
@@ -22,7 +22,7 @@ import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
-import org.apache.jackrabbit.oak.plugins.index.lucene.FieldNames;
+import org.apache.jackrabbit.oak.plugins.index.search.FieldNames;
 import org.apache.jackrabbit.oak.spi.query.Filter;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.facet.FacetResult;

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FunctionIndexProcessor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FunctionIndexProcessor.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FunctionIndexProcessor.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/FunctionIndexProcessor.java Tue Sep 25 12:24:15 2018
@@ -18,262 +18,13 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.lucene.util;
 
-import java.util.ArrayDeque;
-import java.util.ArrayList;
-import java.util.Deque;
-
-import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.commons.PathUtils;
-import org.apache.jackrabbit.oak.plugins.memory.EmptyPropertyState;
-import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
-import org.apache.jackrabbit.oak.spi.query.QueryConstants;
-import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
 /**
  * A parser for function-based indexes. It converts the human-readable function
  * definition (XPath) to the internal Polish notation.
  */
-public class FunctionIndexProcessor {
-    
-    private static final Logger LOG =
-            LoggerFactory.getLogger(FunctionIndexProcessor.class);
-    
-    private String remaining;
-
-    private static final PropertyState EMPTY_PROPERTY_STATE = EmptyPropertyState.emptyProperty("empty", Type.STRINGS);
+public class FunctionIndexProcessor extends org.apache.jackrabbit.oak.plugins.index.search.util.FunctionIndexProcessor {
 
     private FunctionIndexProcessor(String function) {
-        this.remaining = function;
-    }
-    
-    /**
-     * Get the list of properties used in the given function code.
-     * 
-     * @param functionCode the tokens, for example ["function", "lower", "@name"]
-     * @return the list of properties, for example ["name"]
-     */
-    public static String[] getProperties(String[] functionCode) {
-        ArrayList<String> properties = new ArrayList<String>();
-        for(String token : functionCode) {
-            if (token.startsWith("@")) {
-                String propertyName = token.substring(1);
-                properties.add(propertyName);
-            }
-        }
-        return properties.toArray(new String[0]);
-    }
-
-    /**
-     * Try to calculate the value for the given function code.
-     * 
-     * @param path the path of the node
-     * @param state the node state
-     * @param functionCode the tokens, for example ["function", "lower", "@name"]
-     * @return null, or the calculated value
-     */
-    public static PropertyState tryCalculateValue(String path, NodeState state, String[] functionCode) {
-        Deque<PropertyState> stack = new ArrayDeque<PropertyState>();
-        for (int i = functionCode.length - 1; i > 0; i--) {
-            String token = functionCode[i];
-            PropertyState ps;
-            if (token.startsWith("@")) {
-                String propertyName = token.substring(1);
-                ps = getProperty(path, state, propertyName);
-            } else {
-                ps = calculateFunction(token, stack);
-            }
-            if (ps == null) {
-                ps = EMPTY_PROPERTY_STATE;
-            }
-            stack.push(ps);
-        }
-
-        PropertyState ret = stack.pop();
-        return ret==EMPTY_PROPERTY_STATE ? null : ret;
-    }
-    
-    /**
-     * Split the polish notation into a tokens that can more easily be processed.
-     *  
-     *  @param functionDescription in polish notation, for example "function*lower*{@literal @}name"
-     *  @return tokens, for example ["function", "lower", "{@literal @}name"]
-     */
-    public static String[] getFunctionCode(String functionDescription) {
-        if (functionDescription == null) {
-            return null;
-        }
-        return functionDescription.split("\\*");
-    }
-    
-    private static PropertyState calculateFunction(String functionName, 
-            Deque<PropertyState> stack) {
-        PropertyState ps = stack.pop();
-        if ("coalesce".equals(functionName)) {
-            // coalesce (a, b) => (a != null ? a : b)
-            // we pop stack again to consume the second parameter
-            // also, if ps is EMPTY_PROPERTY_STATE, then newly popped value is to be used
-            PropertyState ps2 = stack.pop();
-            if (ps == EMPTY_PROPERTY_STATE) {
-                ps = ps2;
-            }
-        }
-        if (ps == EMPTY_PROPERTY_STATE) {
-            return ps;
-        }
-        Type<?> type = null;
-        ArrayList<Object> values = new ArrayList<Object>(ps.count());
-        for (int i = 0; i < ps.count(); i++) {
-            String s = ps.getValue(Type.STRING, i);
-            Object x;
-            if ("lower".equals(functionName)) {
-                x = s.toLowerCase();
-                type = Type.STRING;
-            } else if ("coalesce".equals(functionName)) {
-                x = s;
-                type = Type.STRING;
-            } else if ("upper".equals(functionName)) {
-                x = s.toUpperCase();
-                type = Type.STRING;
-            } else if ("length".equals(functionName)) {
-                x = (long) s.length();
-                type = Type.LONG;
-            } else {
-                LOG.debug("Unknown function {}", functionName);
-                return null;
-            }
-            values.add(x);
-        }
-        PropertyState result;
-        if (values.size() == 1) {
-            result = PropertyStates.createProperty("value", values.get(0), type);
-        } else {
-            type = type.getArrayType();
-            result = PropertyStates.createProperty("value", values, type);
-        }
-        return result;
-    }
-    
-    private static PropertyState getProperty(String path, NodeState state, 
-            String propertyName) {
-        if (PathUtils.getDepth(propertyName) != 1) {
-            for(String n : PathUtils.elements(PathUtils.getParentPath(propertyName))) {
-                state = state.getChildNode(n);
-                if (!state.exists()) {
-                    return null;
-                }
-            }
-            propertyName = PathUtils.getName(propertyName);
-        }
-        PropertyState ps;
-        if (":localname".equals(propertyName)) {
-            ps = PropertyStates.createProperty("value", 
-                    getLocalName(PathUtils.getName(path)), Type.STRING);
-        } else if (":name".equals(propertyName)) {
-            ps = PropertyStates.createProperty("value", 
-                    PathUtils.getName(path), Type.STRING);
-        } else {
-            ps = state.getProperty(propertyName);
-        }
-        if (ps == null || ps.count() == 0) {
-            return null;
-        }
-        return ps;
+        super(function);
     }
-    
-    private static String getLocalName(String name) {
-        int colon = name.indexOf(':');
-        // TODO LOCALNAME: evaluation of local name might not be correct
-        return colon < 0 ? name : name.substring(colon + 1);
-    }
-    
-    /**
-     * Convert a function (in human-readable form) to the polish notation.
-     * 
-     * @param function the function, for example "lower([name])"
-     * @return the polish notation, for example "function*lower*{@literal @}name"
-     */
-    public static String convertToPolishNotation(String function) {
-        if (function == null) {
-            return null;
-        }
-        FunctionIndexProcessor p = new FunctionIndexProcessor(function);
-        return QueryConstants.FUNCTION_RESTRICTION_PREFIX + p.parse();
-    }
-    
-    String parse() {
-        if (match("fn:local-name()") || match("localname()")) {
-            return "@:localname";
-        }
-        if (match("fn:name()") || match("name()")) {
-            return "@:name";
-        }
-        if (match("fn:upper-case(") || match("upper(")) {
-            return "upper*" + parse() + read(")");
-        }
-        if (match("fn:lower-case(") || match("lower(")) {
-            return "lower*" + parse() + read(")");
-        }
-        if (match("fn:coalesce(") || match("coalesce(")) {
-            return "coalesce*" + parse() + readCommaAndWhitespace() + parse() + read(")");
-        }
-        if (match("fn:string-length(") || match("length(")) {
-            return "length*" + parse() + read(")");
-        }
-
-        // property name
-        if (match("[")) {
-            String prop = remaining;
-            int indexOfComma = remaining.indexOf(",");
-            if (indexOfComma > 0) {
-                prop = remaining.substring(0, indexOfComma);
-            }
-            prop = prop.substring(0, prop.lastIndexOf(']'));
-            remaining = remaining.substring(prop.length() + 1);
-            return property(prop.replaceAll("]]", "]"));
-        } else {
-            String prop = remaining;
-            int paren = remaining.indexOf(')');
-            int comma = remaining.indexOf(',');
-            int end = comma;
-            if (paren >=0) {
-                end = (end < 0) ? paren : Math.min(end, paren);
-            }
-            if (end >= 0) {
-                prop = remaining.substring(0, end);
-            }
-            remaining = remaining.substring(prop.length());
-            return property(prop.replaceAll("@", ""));
-        }
-    }
-    
-    String property(String p) {
-        return "@" + p;
-    }
-    
-    private String read(String string) {
-        match(string);
-        return "";
-    }
-
-    private String
-    readCommaAndWhitespace() {
-        while (match(" ")) {
-        }
-        match(",");
-        while (match(" ")) {
-        }
-        return "*";
-    }
-    
-    private boolean match(String string) {
-        if (remaining.startsWith(string)) {
-            remaining = remaining.substring(string.length());
-            return true;
-        }
-        return false;
-    }
-
 }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/IndexDefinitionBuilder.java Tue Sep 25 12:24:15 2018
@@ -34,6 +34,8 @@ import org.apache.jackrabbit.oak.api.Typ
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
 import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants;
+import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants;
+import org.apache.jackrabbit.oak.plugins.index.search.util.NodeStateCopyUtils;
 import org.apache.jackrabbit.oak.plugins.tree.factories.TreeFactory;
 import org.apache.jackrabbit.oak.spi.filter.PathFilter;
 import org.apache.jackrabbit.oak.spi.state.EqualsDiff;
@@ -46,6 +48,7 @@ import static org.apache.jackrabbit.JcrC
 import static org.apache.jackrabbit.JcrConstants.NT_UNSTRUCTURED;
 import static org.apache.jackrabbit.oak.api.Type.NAME;
 import static org.apache.jackrabbit.oak.api.Type.STRINGS;
+import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.TYPE_LUCENE;
 import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
 
 public final class IndexDefinitionBuilder {
@@ -73,15 +76,15 @@ public final class IndexDefinitionBuilde
         this.builder = nodeBuilder;
         this.initial = nodeBuilder.getNodeState();
         this.tree = TreeFactory.createTree(builder);
-        tree.setProperty(LuceneIndexConstants.COMPAT_MODE, 2);
+        tree.setProperty(FulltextIndexConstants.COMPAT_MODE, 2);
         tree.setProperty("async", "async");
         setType();
         tree.setProperty(JCR_PRIMARYTYPE, "oak:QueryIndexDefinition", NAME);
-        indexRule = getOrCreateChild(tree, LuceneIndexConstants.INDEX_RULES);
+        indexRule = getOrCreateChild(tree, FulltextIndexConstants.INDEX_RULES);
     }
 
     public IndexDefinitionBuilder evaluatePathRestrictions(){
-        tree.setProperty(LuceneIndexConstants.EVALUATE_PATH_RESTRICTION, true);
+        tree.setProperty(FulltextIndexConstants.EVALUATE_PATH_RESTRICTION, true);
         return this;
     }
 
@@ -127,7 +130,7 @@ public final class IndexDefinitionBuilde
     }
 
     public IndexDefinitionBuilder nodeTypeIndex() {
-        tree.setProperty(LuceneIndexConstants.PROP_INDEX_NODE_TYPE, true);
+        tree.setProperty(FulltextIndexConstants.PROP_INDEX_NODE_TYPE, true);
         return this;
     }
 
@@ -167,7 +170,7 @@ public final class IndexDefinitionBuilde
     private void setType() {
         PropertyState type = tree.getProperty(IndexConstants.TYPE_PROPERTY_NAME);
         if (type == null || !"disabled".equals(type.getValue(Type.STRING))) {
-            tree.setProperty(IndexConstants.TYPE_PROPERTY_NAME, "lucene");
+            tree.setProperty(IndexConstants.TYPE_PROPERTY_NAME, TYPE_LUCENE);
         }
     }
 
@@ -199,17 +202,17 @@ public final class IndexDefinitionBuilde
         }
 
         public IndexRule indexNodeName(){
-            indexRule.setProperty(LuceneIndexConstants.INDEX_NODE_NAME, true);
+            indexRule.setProperty(FulltextIndexConstants.INDEX_NODE_NAME, true);
             return this;
         }
 
         public IndexRule includePropertyTypes(String ... types){
-            indexRule.setProperty(LuceneIndexConstants.INCLUDE_PROPERTY_TYPES, asList(types), STRINGS);
+            indexRule.setProperty(FulltextIndexConstants.INCLUDE_PROPERTY_TYPES, asList(types), STRINGS);
             return this;
         }
 
         public IndexRule sync() {
-            indexRule.setProperty(LuceneIndexConstants.PROP_SYNC, true);
+            indexRule.setProperty(FulltextIndexConstants.PROP_SYNC, true);
             return this;
         }
 
@@ -242,18 +245,18 @@ public final class IndexDefinitionBuilde
         }
 
         private void loadExisting() {
-            if (!indexRule.hasChild(LuceneIndexConstants.PROP_NAME)) {
+            if (!indexRule.hasChild(FulltextIndexConstants.PROP_NAME)) {
                 return;
             }
 
             for (Tree tree : getPropsTree().getChildren()){
-                if (!tree.hasProperty(LuceneIndexConstants.PROP_NAME)){
+                if (!tree.hasProperty(FulltextIndexConstants.PROP_NAME)){
                     continue;
                 }
-                String name = tree.getProperty(LuceneIndexConstants.PROP_NAME).getValue(Type.STRING);
+                String name = tree.getProperty(FulltextIndexConstants.PROP_NAME).getValue(Type.STRING);
                 boolean regex = false;
-                if (tree.hasProperty(LuceneIndexConstants.PROP_IS_REGEX)) {
-                    regex = tree.getProperty(LuceneIndexConstants.PROP_IS_REGEX).getValue(Type.BOOLEAN);
+                if (tree.hasProperty(FulltextIndexConstants.PROP_IS_REGEX)) {
+                    regex = tree.getProperty(FulltextIndexConstants.PROP_IS_REGEX).getValue(Type.BOOLEAN);
                 }
                 PropertyRule pr = new PropertyRule(this, tree, name, regex);
                 props.put(name, pr);
@@ -262,7 +265,7 @@ public final class IndexDefinitionBuilde
 
         private Tree findExisting(String name) {
             for (Tree tree : getPropsTree().getChildren()){
-                if (name.equals(tree.getProperty(LuceneIndexConstants.PROP_NAME).getValue(Type.STRING))){
+                if (name.equals(tree.getProperty(FulltextIndexConstants.PROP_NAME).getValue(Type.STRING))){
                     return tree;
                 }
             }
@@ -290,7 +293,7 @@ public final class IndexDefinitionBuilde
         }
 
         private Tree getPropsTree() {
-            return getOrCreateChild(indexRule, LuceneIndexConstants.PROP_NODE);
+            return getOrCreateChild(indexRule, FulltextIndexConstants.PROP_NODE);
         }
     }
 
@@ -302,20 +305,20 @@ public final class IndexDefinitionBuilde
             this.indexRule = indexRule;
             this.propTree = propTree;
             if (name != null) {
-                propTree.setProperty(LuceneIndexConstants.PROP_NAME, name);
+                propTree.setProperty(FulltextIndexConstants.PROP_NAME, name);
             }
             if (regex) {
-                propTree.setProperty(LuceneIndexConstants.PROP_IS_REGEX, true);
+                propTree.setProperty(FulltextIndexConstants.PROP_IS_REGEX, true);
             }
         }
 
         public PropertyRule useInExcerpt(){
-            propTree.setProperty(LuceneIndexConstants.PROP_USE_IN_EXCERPT, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_USE_IN_EXCERPT, true);
             return this;
         }
 
         public PropertyRule useInSpellcheck(){
-            propTree.setProperty(LuceneIndexConstants.PROP_USE_IN_SPELLCHECK, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_USE_IN_SPELLCHECK, true);
             return this;
         }
 
@@ -327,63 +330,63 @@ public final class IndexDefinitionBuilde
         public PropertyRule type(String type){
             //This would throw an IAE if type is invalid
             PropertyType.valueFromName(type);
-            propTree.setProperty(LuceneIndexConstants.PROP_TYPE, type);
+            propTree.setProperty(FulltextIndexConstants.PROP_TYPE, type);
             return this;
         }
 
         public PropertyRule useInSuggest(){
-            propTree.setProperty(LuceneIndexConstants.PROP_USE_IN_SUGGEST, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_USE_IN_SUGGEST, true);
             return this;
         }
 
         public PropertyRule analyzed(){
-            propTree.setProperty(LuceneIndexConstants.PROP_ANALYZED, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_ANALYZED, true);
             return this;
         }
 
         public PropertyRule nodeScopeIndex(){
-            propTree.setProperty(LuceneIndexConstants.PROP_NODE_SCOPE_INDEX, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_NODE_SCOPE_INDEX, true);
             return this;
         }
 
         public PropertyRule ordered(){
-            propTree.setProperty(LuceneIndexConstants.PROP_ORDERED, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_ORDERED, true);
             return this;
         }
 
         public PropertyRule ordered(String type){
             type(type);
-            propTree.setProperty(LuceneIndexConstants.PROP_ORDERED, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_ORDERED, true);
             return this;
         }
 
         public PropertyRule disable() {
-            propTree.setProperty(LuceneIndexConstants.PROP_INDEX, false);
+            propTree.setProperty(FulltextIndexConstants.PROP_INDEX, false);
             return this;
         }
 
         public PropertyRule propertyIndex(){
-            propTree.setProperty(LuceneIndexConstants.PROP_PROPERTY_INDEX, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_PROPERTY_INDEX, true);
             return this;
         }
 
         public PropertyRule nullCheckEnabled(){
-            propTree.setProperty(LuceneIndexConstants.PROP_NULL_CHECK_ENABLED, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_NULL_CHECK_ENABLED, true);
             return this;
         }
 
         public PropertyRule excludeFromAggregation(){
-            propTree.setProperty(LuceneIndexConstants.PROP_EXCLUDE_FROM_AGGREGATE, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_EXCLUDE_FROM_AGGREGATE, true);
             return this;
         }
 
         public PropertyRule notNullCheckEnabled(){
-            propTree.setProperty(LuceneIndexConstants.PROP_NOT_NULL_CHECK_ENABLED, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_NOT_NULL_CHECK_ENABLED, true);
             return this;
         }
 
         public PropertyRule weight(int weight){
-            propTree.setProperty(LuceneIndexConstants.PROP_WEIGHT, weight);
+            propTree.setProperty(FulltextIndexConstants.PROP_WEIGHT, weight);
             return this;
         }
 
@@ -403,17 +406,17 @@ public final class IndexDefinitionBuilde
         }
 
         public PropertyRule sync(){
-            propTree.setProperty(LuceneIndexConstants.PROP_SYNC, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_SYNC, true);
             return this;
         }
 
         public PropertyRule unique(){
-            propTree.setProperty(LuceneIndexConstants.PROP_UNIQUE, true);
+            propTree.setProperty(FulltextIndexConstants.PROP_UNIQUE, true);
             return this;
         }
 
         public PropertyRule function(String fn) {
-            propTree.setProperty(LuceneIndexConstants.PROP_FUNCTION, fn);
+            propTree.setProperty(FulltextIndexConstants.PROP_FUNCTION, fn);
             return this;
         }
 
@@ -442,7 +445,7 @@ public final class IndexDefinitionBuilde
 
     public AggregateRule aggregateRule(String type){
         if (aggregatesTree == null){
-            aggregatesTree = getOrCreateChild(tree, LuceneIndexConstants.AGGREGATES);
+            aggregatesTree = getOrCreateChild(tree, FulltextIndexConstants.AGGREGATES);
         }
         AggregateRule rule = aggRules.get(type);
         if (rule == null){
@@ -485,7 +488,7 @@ public final class IndexDefinitionBuilde
 
         private Tree findExisting(String includePath) {
             for (Tree tree : aggregate.getChildren()){
-                if (includePath.equals(tree.getProperty(LuceneIndexConstants.AGG_PATH).getValue(Type.STRING))){
+                if (includePath.equals(tree.getProperty(FulltextIndexConstants.AGG_PATH).getValue(Type.STRING))){
                     return tree;
                 }
             }
@@ -494,7 +497,7 @@ public final class IndexDefinitionBuilde
 
         private void loadExisting(Tree aggregate) {
             for (Tree tree : aggregate.getChildren()){
-                if (tree.hasProperty(LuceneIndexConstants.AGG_PATH)) {
+                if (tree.hasProperty(FulltextIndexConstants.AGG_PATH)) {
                     Include include = new Include(this, tree);
                     includes.put(include.getPath(), include);
                 }
@@ -511,12 +514,12 @@ public final class IndexDefinitionBuilde
             }
 
             public Include path(String includePath) {
-                include.setProperty(LuceneIndexConstants.AGG_PATH, includePath);
+                include.setProperty(FulltextIndexConstants.AGG_PATH, includePath);
                 return this;
             }
 
             public Include relativeNode(){
-                include.setProperty(LuceneIndexConstants.AGG_RELATIVE_NODE, true);
+                include.setProperty(FulltextIndexConstants.AGG_RELATIVE_NODE, true);
                 return this;
             }
 
@@ -525,7 +528,7 @@ public final class IndexDefinitionBuilde
             }
 
             public String getPath(){
-                return include.getProperty(LuceneIndexConstants.AGG_PATH).getValue(Type.STRING);
+                return include.getProperty(FulltextIndexConstants.AGG_PATH).getValue(Type.STRING);
             }
         }
     }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/LuceneIndexHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/LuceneIndexHelper.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/LuceneIndexHelper.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/LuceneIndexHelper.java Tue Sep 25 12:24:15 2018
@@ -16,56 +16,28 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.lucene.util;
 
+import java.util.Set;
+
+import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants;
+import org.apache.jackrabbit.oak.plugins.index.search.util.IndexHelper;
+import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
 import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.collect.ImmutableSet.of;
-import static com.google.common.collect.Sets.newHashSet;
-import static javax.jcr.PropertyType.TYPENAME_BINARY;
-import static javax.jcr.PropertyType.TYPENAME_STRING;
 import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE;
-import static org.apache.jackrabbit.JcrConstants.JCR_UUID;
 import static org.apache.jackrabbit.oak.api.Type.NAME;
 import static org.apache.jackrabbit.oak.api.Type.STRINGS;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.ASYNC_PROPERTY_NAME;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NODE_TYPE;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.REINDEX_PROPERTY_NAME;
 import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.TYPE_PROPERTY_NAME;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.EXCLUDE_PROPERTY_NAMES;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.EXPERIMENTAL_STORAGE;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.INCLUDE_PROPERTY_NAMES;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.INCLUDE_PROPERTY_TYPES;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.PERSISTENCE_FILE;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.PERSISTENCE_NAME;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.PERSISTENCE_PATH;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.TYPE_LUCENE;
 import static org.apache.jackrabbit.oak.plugins.memory.PropertyStates.createProperty;
-import static org.apache.jackrabbit.oak.spi.security.user.UserConstants.GROUP_PROPERTY_NAMES;
-import static org.apache.jackrabbit.oak.spi.security.user.UserConstants.USER_PROPERTY_NAMES;
-
-import java.util.Set;
-
-import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants;
-import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
-import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.jetbrains.annotations.NotNull;
-import org.jetbrains.annotations.Nullable;
 
 public class LuceneIndexHelper {
 
-    public static final Set<String> JR_PROPERTY_INCLUDES = of(TYPENAME_STRING,
-            TYPENAME_BINARY);
-
-    /**
-     * Nodes that represent content that shold not be tokenized (like UUIDs,
-     * etc)
-     * 
-     */
-    private final static Set<String> NOT_TOKENIZED = newHashSet(JCR_UUID);
-
-    static {
-        NOT_TOKENIZED.addAll(USER_PROPERTY_NAMES);
-        NOT_TOKENIZED.addAll(GROUP_PROPERTY_NAMES);
-    }
-
     private LuceneIndexHelper() {
     }
 
@@ -99,15 +71,15 @@ public class LuceneIndexHelper {
             index.setProperty(ASYNC_PROPERTY_NAME, async);
         }
         if (propertyTypes != null && !propertyTypes.isEmpty()) {
-            index.setProperty(createProperty(INCLUDE_PROPERTY_TYPES,
+            index.setProperty(createProperty(FulltextIndexConstants.INCLUDE_PROPERTY_TYPES,
                     propertyTypes, STRINGS));
         }
         if (excludes != null && !excludes.isEmpty()) {
-            index.setProperty(createProperty(EXCLUDE_PROPERTY_NAMES, excludes,
+            index.setProperty(createProperty(FulltextIndexConstants.EXCLUDE_PROPERTY_NAMES, excludes,
                     STRINGS));
         }
         if (stored != null) {
-            index.setProperty(createProperty(EXPERIMENTAL_STORAGE, stored));
+            index.setProperty(createProperty(FulltextIndexConstants.EXPERIMENTAL_STORAGE, stored));
         }
         return index;
     }
@@ -130,18 +102,18 @@ public class LuceneIndexHelper {
         index = index.child(name);
         index.setProperty(JCR_PRIMARYTYPE, INDEX_DEFINITIONS_NODE_TYPE, NAME)
                 .setProperty(TYPE_PROPERTY_NAME, TYPE_LUCENE)
-                .setProperty(PERSISTENCE_NAME, PERSISTENCE_FILE)
-                .setProperty(PERSISTENCE_PATH, path)
+                .setProperty(FulltextIndexConstants.PERSISTENCE_NAME, FulltextIndexConstants.PERSISTENCE_FILE)
+                .setProperty(FulltextIndexConstants.PERSISTENCE_PATH, path)
                 .setProperty(REINDEX_PROPERTY_NAME, true);
         if (async != null) {
             index.setProperty(ASYNC_PROPERTY_NAME, async);
         }
         if (propertyTypes != null && !propertyTypes.isEmpty()) {
-            index.setProperty(createProperty(INCLUDE_PROPERTY_TYPES,
+            index.setProperty(createProperty(FulltextIndexConstants.INCLUDE_PROPERTY_TYPES,
                     propertyTypes, STRINGS));
         }
         if (excludes != null && !excludes.isEmpty()) {
-            index.setProperty(createProperty(EXCLUDE_PROPERTY_NAMES, excludes,
+            index.setProperty(createProperty(FulltextIndexConstants.EXCLUDE_PROPERTY_NAMES, excludes,
                     STRINGS));
         }
         return index;
@@ -158,8 +130,8 @@ public class LuceneIndexHelper {
         index.setProperty(JCR_PRIMARYTYPE, INDEX_DEFINITIONS_NODE_TYPE, NAME)
                 .setProperty(TYPE_PROPERTY_NAME, TYPE_LUCENE)
                 .setProperty(REINDEX_PROPERTY_NAME, true);
-        index.setProperty(LuceneIndexConstants.FULL_TEXT_ENABLED, false);
-        index.setProperty(createProperty(INCLUDE_PROPERTY_NAMES, includes, STRINGS));
+        index.setProperty(FulltextIndexConstants.FULL_TEXT_ENABLED, false);
+        index.setProperty(createProperty(FulltextIndexConstants.INCLUDE_PROPERTY_NAMES, includes, STRINGS));
 
         if (async != null) {
             index.setProperty(ASYNC_PROPERTY_NAME, async);
@@ -167,15 +139,7 @@ public class LuceneIndexHelper {
         return index;
     }
 
-    /**
-     * Nodes that represent UUIDs and shold not be tokenized
-     * 
-     */
-    public static boolean skipTokenization(String name) {
-        return NOT_TOKENIZED.contains(name);
-    }
-
     public static boolean isLuceneIndexNode(NodeState node){
-        return TYPE_LUCENE.equals(node.getString(TYPE_PROPERTY_NAME));
+        return IndexHelper.isIndexNodeOfType(node, TYPE_LUCENE);
     }
 }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/LuceneInitializerHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/LuceneInitializerHelper.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/LuceneInitializerHelper.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/LuceneInitializerHelper.java Tue Sep 25 12:24:15 2018
@@ -16,17 +16,18 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.lucene.util;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.util.LuceneIndexHelper.newLuceneIndexDefinition;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.util.LuceneIndexHelper.newLuceneFileIndexDefinition;
-
 import java.util.Set;
 
+import org.apache.jackrabbit.oak.plugins.index.search.util.IndexHelper;
 import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.jetbrains.annotations.NotNull;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_NAME;
+import static org.apache.jackrabbit.oak.plugins.index.lucene.util.LuceneIndexHelper.newLuceneFileIndexDefinition;
+import static org.apache.jackrabbit.oak.plugins.index.lucene.util.LuceneIndexHelper.newLuceneIndexDefinition;
+
 public class LuceneInitializerHelper implements RepositoryInitializer {
 
     private final String name;
@@ -42,11 +43,11 @@ public class LuceneInitializerHelper imp
     private Boolean storageEnabled;
 
     public LuceneInitializerHelper(String name) {
-        this(name, LuceneIndexHelper.JR_PROPERTY_INCLUDES, null, null, null);
+        this(name, IndexHelper.JR_PROPERTY_INCLUDES, null, null, null);
     }
 
     public LuceneInitializerHelper(String name, Boolean storageEnabled) {
-        this(name, LuceneIndexHelper.JR_PROPERTY_INCLUDES, null, null, storageEnabled);
+        this(name, IndexHelper.JR_PROPERTY_INCLUDES, null, null, storageEnabled);
     }
 
     public LuceneInitializerHelper(String name, Set<String> propertyTypes) {
@@ -82,7 +83,7 @@ public class LuceneInitializerHelper imp
 
     /**
      * will set the {@code async} property to the provided value
-     * 
+     *
      * @param async
      * @return
      */
@@ -90,7 +91,7 @@ public class LuceneInitializerHelper imp
         this.async = checkNotNull(async);
         return this;
     }
-    
+
     @Override
     public void initialize(@NotNull NodeBuilder builder) {
         if (builder.hasChildNode(INDEX_DEFINITIONS_NAME)

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/MoreLikeThisHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/MoreLikeThisHelper.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/MoreLikeThisHelper.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/MoreLikeThisHelper.java Tue Sep 25 12:24:15 2018
@@ -20,7 +20,7 @@ import java.io.StringReader;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.jackrabbit.oak.plugins.index.lucene.FieldNames;
+import org.apache.jackrabbit.oak.plugins.index.search.FieldNames;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.index.IndexReader;

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtils.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtils.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateCopyUtils.java Tue Sep 25 12:24:15 2018
@@ -19,136 +19,6 @@
 
 package org.apache.jackrabbit.oak.plugins.index.lucene.util;
 
-import javax.jcr.Binary;
-import javax.jcr.Node;
-import javax.jcr.PropertyType;
-import javax.jcr.RepositoryException;
-import javax.jcr.Value;
-import javax.jcr.ValueFactory;
+final class NodeStateCopyUtils extends org.apache.jackrabbit.oak.plugins.index.search.util.NodeStateCopyUtils {
 
-import org.apache.jackrabbit.JcrConstants;
-import org.apache.jackrabbit.commons.JcrUtils;
-import org.apache.jackrabbit.oak.api.Blob;
-import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.api.Tree;
-import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.plugins.tree.factories.TreeFactory;
-import org.apache.jackrabbit.oak.spi.state.NodeState;
-import org.apache.jackrabbit.oak.spi.state.NodeStateUtils;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-import static org.apache.jackrabbit.oak.api.Type.NAMES;
-
-final class NodeStateCopyUtils {
-    private static final String OAK_CHILD_ORDER = ":childOrder";
-
-    public static void copyToTree(NodeState state, Tree tree){
-        tree.setOrderableChildren(state.hasProperty(OAK_CHILD_ORDER));
-        copyProps(state, tree);
-
-        Tree src = TreeFactory.createReadOnlyTree(state);
-        for (Tree srcChild : src.getChildren()){
-            String childName = srcChild.getName();
-            Tree child = tree.addChild(childName);
-            copyToTree(state.getChildNode(childName), child);
-        }
-    }
-
-    public static void copyToNode(NodeState state, Node node) throws RepositoryException {
-        copyProps(state, node);
-
-        Tree src = TreeFactory.createReadOnlyTree(state);
-        for (Tree srcChild : src.getChildren()){
-            String childName = srcChild.getName();
-
-            if (NodeStateUtils.isHidden(childName)){
-                continue;
-            }
-
-            NodeState childState = state.getChildNode(childName);
-            Node child = JcrUtils.getOrAddNode(node, childName, primaryType(childState));
-            copyToNode(childState, child);
-        }
-    }
-
-    private static void copyProps(NodeState state, Tree tree) {
-        for (PropertyState ps : state.getProperties()){
-            if (!ps.getName().equals(OAK_CHILD_ORDER)){
-                tree.setProperty(ps);
-            }
-        }
-    }
-
-    private static void copyProps(NodeState state, Node node) throws RepositoryException {
-        ValueFactory vf = node.getSession().getValueFactory();
-        for (PropertyState ps : state.getProperties()){
-            String name = ps.getName();
-            if (name.equals(JcrConstants.JCR_PRIMARYTYPE)
-                    || name.equals(OAK_CHILD_ORDER)){
-                continue;
-            }
-
-            if (name.equals(JcrConstants.JCR_MIXINTYPES)){
-                for (String n : ps.getValue(NAMES)) {
-                    node.addMixin(n);
-                }
-                continue;
-            }
-
-            if (NodeStateUtils.isHidden(name)){
-                continue;
-            }
-
-            if (ps.isArray()){
-                Value[] values = new Value[ps.count()];
-                for (int i = 0; i < ps.count(); i++) {
-                    values[i] = createValue(vf, ps, i);
-                }
-                node.setProperty(name, values, ps.getType().tag());
-            } else {
-                node.setProperty(name, createValue(vf, ps, -1), ps.getType().tag());
-            }
-        }
-    }
-
-    private static Value createValue(ValueFactory vf, PropertyState ps, int index) throws RepositoryException {
-        switch(ps.getType().tag()) {
-            case PropertyType.STRING :
-                return vf.createValue(getValue(ps, Type.STRING, index));
-            case PropertyType.BINARY:
-                Blob blob = getValue(ps, Type.BINARY, index);
-                Binary bin = vf.createBinary(blob.getNewStream());
-                return vf.createValue(bin);
-            case PropertyType.LONG:
-                return vf.createValue(getValue(ps, Type.LONG, index));
-            case PropertyType.DOUBLE:
-                return vf.createValue(getValue(ps, Type.DOUBLE, index));
-            case PropertyType.DATE:
-                return vf.createValue(getValue(ps, Type.DATE, index));
-            case PropertyType.BOOLEAN:
-                return vf.createValue(getValue(ps, Type.BOOLEAN, index));
-            case PropertyType.NAME:
-                return vf.createValue(getValue(ps, Type.NAME, index));
-            case PropertyType.PATH:
-                return vf.createValue(getValue(ps, Type.PATH, index));
-            case PropertyType.REFERENCE:
-                return vf.createValue(getValue(ps, Type.REFERENCE, index));
-            case PropertyType.WEAKREFERENCE:
-                return vf.createValue(getValue(ps, Type.WEAKREFERENCE, index));
-            case PropertyType.URI:
-                return vf.createValue(getValue(ps, Type.URI, index));
-            case PropertyType.DECIMAL:
-                return vf.createValue(getValue(ps, Type.DECIMAL, index));
-            default:
-                throw new IllegalStateException("Unsupported type " + ps.getType());
-        }
-    }
-
-    private static <T> T getValue(PropertyState ps, Type<T> type, int index){
-        return index < 0 ? ps.getValue(type) : ps.getValue(type, index);
-    }
-
-    private static String primaryType(NodeState state){
-        return checkNotNull(state.getName(JcrConstants.JCR_PRIMARYTYPE), "jcr:primaryType not defined for %s", state);
-    }
 }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateFacetsConfig.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateFacetsConfig.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateFacetsConfig.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/NodeStateFacetsConfig.java Tue Sep 25 12:24:15 2018
@@ -21,7 +21,7 @@ package org.apache.jackrabbit.oak.plugin
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.commons.PathUtils;
-import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants;
+import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.lucene.facet.FacetsConfig;
 
@@ -35,7 +35,7 @@ class NodeStateFacetsConfig extends Face
     private final NodeBuilder nodeBuilder;
 
     NodeStateFacetsConfig(NodeBuilder nodeBuilder) {
-        this.nodeBuilder = nodeBuilder.child(LuceneIndexConstants.FACETS);
+        this.nodeBuilder = nodeBuilder.child(FulltextIndexConstants.FACETS);
         if (!this.nodeBuilder.hasProperty(JcrConstants.JCR_PRIMARYTYPE)) {
             this.nodeBuilder.setProperty(JcrConstants.JCR_PRIMARYTYPE, JcrConstants.NT_UNSTRUCTURED, Type.NAME);
         }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/PathStoredFieldVisitor.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/PathStoredFieldVisitor.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/PathStoredFieldVisitor.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/PathStoredFieldVisitor.java Tue Sep 25 12:24:15 2018
@@ -21,11 +21,10 @@ package org.apache.jackrabbit.oak.plugin
 
 import java.io.IOException;
 
+import org.apache.jackrabbit.oak.plugins.index.search.FieldNames;
 import org.apache.lucene.index.FieldInfo;
 import org.apache.lucene.index.StoredFieldVisitor;
 
-import static org.apache.jackrabbit.oak.plugins.index.lucene.FieldNames.PATH;
-
 public class PathStoredFieldVisitor extends StoredFieldVisitor {
 
     private String path;
@@ -33,7 +32,7 @@ public class PathStoredFieldVisitor exte
 
     @Override
     public Status needsField(FieldInfo fieldInfo) throws IOException {
-        if (PATH.equals(fieldInfo.name)) {
+        if (FieldNames.PATH.equals(fieldInfo.name)) {
             return Status.YES;
         }
         return pathVisited ? Status.STOP : Status.NO;
@@ -42,7 +41,7 @@ public class PathStoredFieldVisitor exte
     @Override
     public void stringField(FieldInfo fieldInfo, String value)
             throws IOException {
-        if (PATH.equals(fieldInfo.name)) {
+        if (FieldNames.PATH.equals(fieldInfo.name)) {
             path = value;
             pathVisited = true;
         }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/SpellcheckHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/SpellcheckHelper.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/SpellcheckHelper.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/SpellcheckHelper.java Tue Sep 25 12:24:15 2018
@@ -18,14 +18,14 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.lucene.util;
 
-import org.apache.jackrabbit.oak.plugins.index.lucene.FieldNames;
+import org.apache.jackrabbit.oak.plugins.index.search.FieldNames;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.index.Term;
 import org.apache.lucene.search.spell.DirectSpellChecker;
 import org.apache.lucene.search.spell.SuggestWord;
 
 /**
- * Helper class for getting spellcheck results for a given term, calling a {@link org.apache.lucene.search.spell.DirectSpellChecker}
+ * Helper class for getting spellcheck results for a given term, calling a {@link DirectSpellChecker}
  * under the hood.
  */
 public class SpellcheckHelper {

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/SuggestHelper.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/SuggestHelper.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/SuggestHelper.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/SuggestHelper.java Tue Sep 25 12:24:15 2018
@@ -27,7 +27,7 @@ import java.util.List;
 import com.google.common.io.Closer;
 import com.google.common.io.Files;
 import org.apache.commons.io.FileUtils;
-import org.apache.jackrabbit.oak.plugins.index.lucene.FieldNames;
+import org.apache.jackrabbit.oak.plugins.index.search.FieldNames;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.index.IndexReader;
 import org.apache.lucene.search.spell.Dictionary;
@@ -42,7 +42,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * Helper class for getting suggest results for a given term, calling a {@link org.apache.lucene.search.suggest.Lookup}
+ * Helper class for getting suggest results for a given term, calling a {@link Lookup}
  * implementation under the hood.
  */
 public class SuggestHelper {
@@ -51,8 +51,8 @@ public class SuggestHelper {
 
     private static final Analyzer analyzer = new Analyzer() {
         @Override
-        protected Analyzer.TokenStreamComponents createComponents(String fieldName, Reader reader) {
-            return new Analyzer.TokenStreamComponents(new CRTokenizer(Version.LUCENE_47, reader));
+        protected TokenStreamComponents createComponents(String fieldName, Reader reader) {
+            return new TokenStreamComponents(new CRTokenizer(Version.LUCENE_47, reader));
         }
     };
 

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/fv/SimSearchUtils.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/fv/SimSearchUtils.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/fv/SimSearchUtils.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/fv/SimSearchUtils.java Tue Sep 25 12:24:15 2018
@@ -23,8 +23,8 @@ import java.util.Collection;
 import java.util.LinkedList;
 import java.util.List;
 
-import org.apache.jackrabbit.oak.plugins.index.lucene.FieldNames;
-import org.apache.jackrabbit.oak.plugins.index.lucene.PropertyDefinition;
+import org.apache.jackrabbit.oak.plugins.index.search.FieldNames;
+import org.apache.jackrabbit.oak.plugins.index.search.PropertyDefinition;
 import org.apache.lucene.analysis.Analyzer;
 import org.apache.lucene.analysis.TokenStream;
 import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;