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 [12/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/sca...

Added: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneWritesOnSegmentStatsTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneWritesOnSegmentStatsTest.java?rev=1841926&view=auto
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneWritesOnSegmentStatsTest.java (added)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneWritesOnSegmentStatsTest.java Tue Sep 25 12:24:15 2018
@@ -0,0 +1,388 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.jackrabbit.oak.plugins.index.lucene;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.Charset;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+
+import com.google.common.io.Files;
+import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.core.data.FileDataStore;
+import org.apache.jackrabbit.oak.InitialContent;
+import org.apache.jackrabbit.oak.Oak;
+import org.apache.jackrabbit.oak.api.ContentRepository;
+import org.apache.jackrabbit.oak.api.Tree;
+import org.apache.jackrabbit.oak.commons.IOUtils;
+import org.apache.jackrabbit.oak.commons.concurrent.ExecutorCloser;
+import org.apache.jackrabbit.oak.plugins.blob.BlobStoreStats;
+import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
+import org.apache.jackrabbit.oak.plugins.blob.datastore.OakFileDataStore;
+import org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexDefinition;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider;
+import org.apache.jackrabbit.oak.plugins.index.lucene.TestUtil;
+import org.apache.jackrabbit.oak.plugins.index.lucene.directory.CopyOnReadDirectory;
+import org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder;
+import org.apache.jackrabbit.oak.plugins.index.nodetype.NodeTypeIndexProvider;
+import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.search.ExtractedTextCache;
+import org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition;
+import org.apache.jackrabbit.oak.query.AbstractQueryTest;
+import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
+import org.apache.jackrabbit.oak.segment.file.FileStore;
+import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
+import org.apache.jackrabbit.oak.segment.file.FileStoreStats;
+import org.apache.jackrabbit.oak.segment.file.InvalidFileStoreVersionException;
+import org.apache.jackrabbit.oak.spi.blob.BlobStore;
+import org.apache.jackrabbit.oak.spi.blob.stats.BlobStatsCollector;
+import org.apache.jackrabbit.oak.spi.commit.Observer;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
+import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
+import org.apache.jackrabbit.oak.spi.state.NodeStore;
+import org.apache.jackrabbit.oak.stats.DefaultStatisticsProvider;
+import org.apache.jackrabbit.oak.stats.StatisticsProvider;
+import org.apache.lucene.store.Directory;
+import org.apache.lucene.store.FSDirectory;
+import org.apache.lucene.store.FilterDirectory;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TemporaryFolder;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * Tests for checking impacts of Lucene writes wrt storage / configuration adjustments on the
+ * {@link org.apache.jackrabbit.oak.segment.SegmentNodeStore}.
+ */
+@Ignore("this is meant to be a benchmark, it shouldn't be part of everyday builds")
+@RunWith(Parameterized.class)
+public class LuceneWritesOnSegmentStatsTest extends AbstractQueryTest {
+
+    private static final File DIRECTORY = new File("target/fs");
+    private static final String FOO_QUERY = "select [jcr:path] from [nt:base] where contains('foo', '*')";
+
+    private final boolean copyOnRW;
+    private final String codec;
+    private final boolean indexOnFS;
+    private final int minRecordLength;
+    private final String mergePolicy;
+
+    private ExecutorService executorService = Executors.newFixedThreadPool(2);
+
+    private final ScheduledExecutorService scheduledExecutorService = Executors.newSingleThreadScheduledExecutor();
+
+    @Rule
+    public TemporaryFolder temporaryFolder = new TemporaryFolder(new File("target"));
+
+    private String corDir = null;
+    private String cowDir = null;
+
+    private TestUtil.OptionalEditorProvider optionalEditorProvider = new TestUtil.OptionalEditorProvider();
+
+    private FileStore fileStore;
+    private DataStoreBlobStore dataStoreBlobStore;
+    private DefaultStatisticsProvider statisticsProvider;
+    private String fdsDir;
+    private String indexPath;
+
+
+    public LuceneWritesOnSegmentStatsTest(boolean copyOnRW, String codec, boolean indexOnFS, int minRecordLength, String mergePolicy) {
+        this.copyOnRW = copyOnRW;
+        this.codec = codec;
+        this.indexOnFS = indexOnFS;
+        this.minRecordLength = minRecordLength;
+        this.mergePolicy = mergePolicy;
+    }
+
+    @Parameterized.Parameters
+    public static Collection<Object[]> data() {
+        return Arrays.asList(new Object[][]{
+                {false, "oakCodec", false, 4096, "tiered"},
+                {false, "oakCodec", false, 4096, "mitigated"},
+                {false, "oakCodec", false, 4096, "no"},
+                {false, "Lucene46", false, 4096, "tiered"},
+                {false, "Lucene46", false, 4096, "mitigated"},
+                {false, "Lucene46", false, 4096, "no"},
+                {false, "oakCodec", false, 100, "tiered"},
+                {false, "oakCodec", false, 100, "mitigated"},
+                {false, "oakCodec", false, 100, "no"},
+                {false, "Lucene46", false, 100, "tiered"},
+                {false, "Lucene46", false, 100, "mitigated"},
+                {false, "Lucene46", false, 100, "no"},
+        });
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        if (!DIRECTORY.exists()) {
+            assert DIRECTORY.mkdirs();
+        }
+    }
+
+    @After
+    public void after() {
+        new ExecutorCloser(executorService).close();
+        IndexDefinition.setDisableStoredIndexDefinition(false);
+        fileStore.close();
+        if (DIRECTORY.exists()) {
+            try {
+                FileUtils.deleteDirectory(DIRECTORY);
+            } catch (IOException e) {
+                // do nothing
+            }
+        }
+    }
+
+    @Override
+    protected void createTestIndexNode() throws Exception {
+        setTraversalEnabled(false);
+    }
+
+    @Override
+    protected ContentRepository createRepository() {
+        LuceneIndexEditorProvider editorProvider;
+        LuceneIndexProvider provider;
+        if (copyOnRW) {
+            IndexCopier copier = createIndexCopier();
+            editorProvider = new LuceneIndexEditorProvider(copier, new ExtractedTextCache(10 * FileUtils.ONE_MB, 100));
+            provider = new LuceneIndexProvider(copier);
+        } else {
+            editorProvider = new LuceneIndexEditorProvider();
+            provider = new LuceneIndexProvider();
+        }
+
+        NodeStore nodeStore;
+        try {
+            statisticsProvider = new DefaultStatisticsProvider(scheduledExecutorService);
+            fileStore = FileStoreBuilder.fileStoreBuilder(DIRECTORY)
+                    .withStatisticsProvider(statisticsProvider)
+                    .withBlobStore(createBlobStore())
+                    .build();
+            nodeStore = SegmentNodeStoreBuilders.builder(fileStore).build();
+        } catch (IOException | InvalidFileStoreVersionException e) {
+            throw new RuntimeException(e);
+        }
+        return new Oak(nodeStore)
+                .with(new InitialContent())
+                .with(new OpenSecurityProvider())
+                .with((QueryIndexProvider) provider)
+                .with((Observer) provider)
+                .with(editorProvider)
+                .with(optionalEditorProvider)
+                .with(new PropertyIndexEditorProvider())
+                .with(new NodeTypeIndexProvider())
+                .createContentRepository();
+    }
+
+    private BlobStore createBlobStore() {
+        FileDataStore fds = new OakFileDataStore();
+        fdsDir = "target/fds-" + codec + copyOnRW + minRecordLength + mergePolicy;
+        fds.setPath(fdsDir);
+        if (minRecordLength > 0) {
+            fds.setMinRecordLength(minRecordLength);
+        }
+        fds.init(null);
+        dataStoreBlobStore = new DataStoreBlobStore(fds);
+        StatisticsProvider sp = new DefaultStatisticsProvider(scheduledExecutorService);
+        BlobStatsCollector collector = new BlobStoreStats(sp);
+        dataStoreBlobStore.setBlobStatsCollector(collector);
+        return dataStoreBlobStore;
+    }
+
+    private IndexCopier createIndexCopier() {
+        try {
+            return new IndexCopier(executorService, temporaryFolder.getRoot()) {
+                @Override
+                public Directory wrapForRead(String indexPath, LuceneIndexDefinition definition,
+                                             Directory remote, String dirName) throws IOException {
+                    Directory ret = super.wrapForRead(indexPath, definition, remote, dirName);
+                    corDir = getFSDirPath(ret);
+                    return ret;
+                }
+
+                @Override
+                public Directory wrapForWrite(LuceneIndexDefinition definition,
+                                              Directory remote, boolean reindexMode, String dirName) throws IOException {
+                    Directory ret = super.wrapForWrite(definition, remote, reindexMode, dirName);
+                    cowDir = getFSDirPath(ret);
+                    return ret;
+                }
+
+                private String getFSDirPath(Directory dir) {
+                    if (dir instanceof CopyOnReadDirectory) {
+                        dir = ((CopyOnReadDirectory) dir).getLocal();
+                    }
+
+                    dir = unwrap(dir);
+
+                    if (dir instanceof FSDirectory) {
+                        return ((FSDirectory) dir).getDirectory().getAbsolutePath();
+                    }
+                    return null;
+                }
+
+                private Directory unwrap(Directory dir) {
+                    if (dir instanceof FilterDirectory) {
+                        return unwrap(((FilterDirectory) dir).getDelegate());
+                    }
+                    return dir;
+                }
+
+            };
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    @After
+    public void shutdownExecutor() {
+        executorService.shutdown();
+        scheduledExecutorService.shutdown();
+    }
+
+    @Test
+    public void testLuceneIndexSegmentStats() throws Exception {
+        IndexDefinitionBuilder idxb = new IndexDefinitionBuilder().noAsync().codec(codec).mergePolicy(mergePolicy);
+        idxb.indexRule("nt:base").property("foo").analyzed().nodeScopeIndex().ordered().useInExcerpt().propertyIndex();
+        idxb.indexRule("nt:base").property("bin").analyzed().nodeScopeIndex().ordered().useInExcerpt().propertyIndex();
+        Tree idx = root.getTree("/").getChild("oak:index").addChild("lucenePropertyIndex");
+        Tree idxDef = idxb.build(idx);
+        if (!codec.equals("oakCodec") && indexOnFS) {
+            idxDef.setProperty("persistence", "file");
+            indexPath = "target/index-" + codec + copyOnRW;
+            idxDef.setProperty("path", indexPath);
+        }
+
+
+        Random r = new Random();
+
+        System.out.println("***");
+        System.out.println(codec + "," + copyOnRW + "," + indexOnFS + "," + minRecordLength + "," + mergePolicy);
+
+        long start = System.currentTimeMillis();
+        int multiplier = 5;
+        for (int n = 0; n < multiplier; n++) {
+            System.err.println("iteration " + (n + 1));
+
+            Tree rootTree = root.getTree("/").addChild("content");
+            byte[] bytes = new byte[10240];
+            Charset charset = Charset.defaultCharset();
+            String text = "";
+            for (int i = 0; i < 1000; i++) {
+                r.nextBytes(bytes);
+                text = new String(bytes, charset);
+                Tree tree = rootTree.addChild(String.valueOf(n + i));
+                tree.setProperty("foo", text);
+                tree.setProperty("bin", bytes);
+            }
+            root.commit();
+
+            printStats();
+
+            System.out.println("reindex");
+
+            // do nothing, reindex and measure
+            idx = root.getTree("/oak:index/lucenePropertyIndex");
+            idx.setProperty("reindex", true);
+            root.commit();
+
+            printStats();
+
+            System.out.println("add and delete");
+
+            // add and delete some content and measure
+            for (int i = 0; i < 1000; i++) {
+                r.nextBytes(bytes);
+                text = new String(bytes, charset);
+                Tree tree = rootTree.addChild(String.valueOf(n + 100 + i));
+                tree.setProperty("foo", text);
+                tree.setProperty("bin", bytes);
+                if (n + i % 3 == 0) { // delete one of the already existing nodes every 3
+                    assert rootTree.getChild(String.valueOf(n + i)).remove();
+                }
+            }
+            root.commit();
+
+            printStats();
+        }
+        long time = System.currentTimeMillis() - start;
+        System.out.println("finished in " + (time / (60000)) + " minutes");
+        System.out.println("***");
+    }
+
+    private double evaluateQuery(String fooQuery) {
+        long q1Start = System.currentTimeMillis();
+        List<String> res1 = executeQuery(fooQuery, SQL2);
+        long q1End = System.currentTimeMillis();
+        double time =  (q1End - q1Start) / 1000d;
+        assertNotNull(res1);
+        assertTrue(res1.size() > 0);
+        return time;
+    }
+
+    private void printStats() throws IOException {
+        fileStore.flush();
+
+        FileStoreStats stats = fileStore.getStats();
+
+        long sizeOfDirectory = FileUtils.sizeOfDirectory(new File(fdsDir));
+        String fdsSize = (sizeOfDirectory / (1024 * 1000)) + " MB";
+
+        double time = evaluateQuery(FOO_QUERY);
+
+        System.err.println("||codec||min record length||merge policy||segment size||FDS size||query time||");
+        System.err.println("|" + codec + "|" + minRecordLength + "|" + mergePolicy + "|" + IOUtils.humanReadableByteCount(
+                stats.getApproximateSize()) + "|" + fdsSize + "|" + time + " s|");
+
+        if (indexOnFS) {
+            long sizeOfFSIndex = FileUtils.sizeOfDirectory(new File(indexPath));
+            System.out.println("Index on FS size : " + FileUtils.byteCountToDisplaySize(sizeOfFSIndex));
+        }
+    }
+
+    private long dumpFileStoreTo(File to) throws IOException {
+        if (!to.exists()) {
+            assert to.mkdirs();
+        }
+        for (File f : DIRECTORY.listFiles()) {
+            Files.copy(f, new File(to.getPath(), f.getName()));
+        }
+
+        long sizeOfDirectory = FileUtils.sizeOfDirectory(to);
+
+        to.deleteOnExit();
+        return sizeOfDirectory;
+    }
+}

Propchange: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneWritesOnSegmentStatsTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/MultiplexingLucenePropertyIndexTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/MultiplexingLucenePropertyIndexTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/MultiplexingLucenePropertyIndexTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/MultiplexingLucenePropertyIndexTest.java Tue Sep 25 12:24:15 2018
@@ -19,6 +19,19 @@
 
 package org.apache.jackrabbit.oak.plugins.index.lucene;
 
+import static com.google.common.collect.ImmutableList.of;
+import static org.apache.jackrabbit.oak.api.QueryEngine.NO_BINDINGS;
+import static org.apache.jackrabbit.oak.api.Type.STRINGS;
+import static org.apache.jackrabbit.oak.plugins.index.lucene.LucenePropertyIndexTest.createIndex;
+import static org.apache.jackrabbit.oak.plugins.index.lucene.TestUtil.newDoc;
+import static org.apache.jackrabbit.oak.plugins.index.lucene.util.LuceneIndexHelper.newLucenePropertyIndexDefinition;
+import static org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.ORDERED_PROP_NAMES;
+import static org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.PROP_NODE;
+import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
+import static org.apache.jackrabbit.oak.plugins.memory.PropertyStates.createProperty;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
 import java.io.File;
 import java.io.IOException;
 import java.util.ArrayList;
@@ -33,6 +46,7 @@ import javax.jcr.PropertyType;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Lists;
 import org.apache.commons.io.FileUtils;
+import org.apache.jackrabbit.oak.InitialContent;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.ContentRepository;
 import org.apache.jackrabbit.oak.api.Result;
@@ -46,12 +60,14 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.DefaultIndexWriterFactory;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriter;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterConfig;
-import org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriterFactory;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.MultiplexersLucene;
 import org.apache.jackrabbit.oak.plugins.index.nodetype.NodeTypeIndexProvider;
 import org.apache.jackrabbit.oak.plugins.index.property.PropertyIndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants;
+import org.apache.jackrabbit.oak.plugins.index.search.ExtractedTextCache;
+import org.apache.jackrabbit.oak.plugins.index.search.spi.query.FulltextIndexPlanner;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
-import org.apache.jackrabbit.oak.InitialContent;
+import org.apache.jackrabbit.oak.plugins.memory.PropertyValues;
 import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 import org.apache.jackrabbit.oak.query.NodeStateNodeTypeInfoProvider;
 import org.apache.jackrabbit.oak.query.QueryEngineSettings;
@@ -63,7 +79,6 @@ import org.apache.jackrabbit.oak.query.i
 import org.apache.jackrabbit.oak.spi.commit.Observer;
 import org.apache.jackrabbit.oak.spi.mount.MountInfoProvider;
 import org.apache.jackrabbit.oak.spi.mount.Mounts;
-import org.apache.jackrabbit.oak.plugins.memory.PropertyValues;
 import org.apache.jackrabbit.oak.spi.query.QueryIndex;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
@@ -79,14 +94,6 @@ import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
 import static com.google.common.collect.ImmutableList.of;
-import static org.apache.jackrabbit.oak.api.QueryEngine.NO_BINDINGS;
-import static org.apache.jackrabbit.oak.api.Type.STRINGS;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.ORDERED_PROP_NAMES;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.PROP_NODE;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LucenePropertyIndexTest.createIndex;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.util.LuceneIndexHelper.newLucenePropertyIndexDefinition;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.TestUtil.newDoc;
-import static org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState.EMPTY_NODE;
 import static org.apache.jackrabbit.oak.plugins.memory.PropertyStates.createProperty;
 import static org.apache.jackrabbit.oak.InitialContentHelper.INITIAL_CONTENT;
 import static org.junit.Assert.assertEquals;
@@ -101,7 +108,7 @@ public class MultiplexingLucenePropertyI
     private NodeState initialContent = INITIAL_CONTENT;
     private NodeBuilder builder = EMPTY_NODE.builder();
     private MountInfoProvider mip = Mounts.newBuilder()
-            .mount("foo", "/libs", "/apps").build();
+        .mount("foo", "/libs", "/apps").build();
     private NodeStore nodeStore;
 
     @Override
@@ -113,30 +120,30 @@ public class MultiplexingLucenePropertyI
             throw new RuntimeException(e);
         }
         LuceneIndexEditorProvider editorProvider = new LuceneIndexEditorProvider(copier,
-                new ExtractedTextCache(10*FileUtils.ONE_MB, 100),
-                null,
-                mip);
+            new ExtractedTextCache(10*FileUtils.ONE_MB, 100),
+            null,
+            mip);
         LuceneIndexProvider provider = new LuceneIndexProvider(new IndexTracker(new DefaultIndexReaderFactory(mip, copier)));
         nodeStore = new MemoryNodeStore();
         return new Oak(nodeStore)
-                .with(new InitialContent())
-                .with(new OpenSecurityProvider())
-                .with((QueryIndexProvider) provider)
-                .with((Observer) provider)
-                .with(editorProvider)
-                .with(new PropertyIndexEditorProvider())
-                .with(new NodeTypeIndexProvider())
-                .createContentRepository();
+            .with(new InitialContent())
+            .with(new OpenSecurityProvider())
+            .with((QueryIndexProvider) provider)
+            .with((Observer) provider)
+            .with(editorProvider)
+            .with(new PropertyIndexEditorProvider())
+            .with(new NodeTypeIndexProvider())
+            .createContentRepository();
     }
 
     @Test
     public void numDocsIsSumOfAllReaders() throws Exception{
         NodeBuilder defnBuilder = newLucenePropertyIndexDefinition(builder, "test", ImmutableSet.of("foo"), "async");
-        IndexDefinition defn = new IndexDefinition(initialContent, defnBuilder.getNodeState(), "/foo");
+        LuceneIndexDefinition defn = new LuceneIndexDefinition(initialContent, defnBuilder.getNodeState(), "/foo");
 
         //1. Have 2 reader created by writes in 2 diff mounts
         DirectoryFactory directoryFactory = new DefaultDirectoryFactory(null, null);
-        LuceneIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, directoryFactory, new LuceneIndexWriterConfig());
+        DefaultIndexWriterFactory factory = new DefaultIndexWriterFactory(mip, directoryFactory, new LuceneIndexWriterConfig());
         LuceneIndexWriter writer = factory.newInstance(defn, builder, true);
 
         Document doc = newDoc("/content/en");
@@ -153,12 +160,12 @@ public class MultiplexingLucenePropertyI
         LuceneIndexReaderFactory readerFactory = new DefaultIndexReaderFactory(mip, null);
         List<LuceneIndexReader> readers = readerFactory.createReaders(defn, builder.getNodeState(),"/foo");
 
-        IndexNodeManager node = new IndexNodeManager("foo", defn, readers, null);
+        LuceneIndexNodeManager node = new LuceneIndexNodeManager("foo", defn, readers, null);
 
         //3 Obtain the plan
         FilterImpl filter = createFilter("nt:base");
         filter.restrictProperty("foo", Operator.EQUAL, PropertyValues.newString("bar"));
-        IndexPlanner planner = new IndexPlanner(node.acquire(), "/foo", filter, Collections.<QueryIndex.OrderEntry>emptyList());
+        FulltextIndexPlanner planner = new FulltextIndexPlanner(node.acquire(), "/foo", filter, Collections.<QueryIndex.OrderEntry>emptyList());
         QueryIndex.IndexPlan plan = planner.getPlan();
 
         //Count should be sum of both readers
@@ -195,8 +202,8 @@ public class MultiplexingLucenePropertyI
         createIndex(root.getTree("/"), idxName, Collections.singleton("foo"));
         root.commit();
 
-        int expectedSize = LucenePropertyIndex.LUCENE_QUERY_BATCH_SIZE * 2 * 2;
-        for (int i = 0; i < LucenePropertyIndex.LUCENE_QUERY_BATCH_SIZE * 2; i++) {
+        int expectedSize = LuceneIndex.LUCENE_QUERY_BATCH_SIZE * 2 * 2;
+        for (int i = 0; i < LuceneIndex.LUCENE_QUERY_BATCH_SIZE * 2; i++) {
             createPath("/libs/a"+i).setProperty("foo", "bar");
             createPath("/content/a"+i).setProperty("foo", "bar");
         }
@@ -211,7 +218,7 @@ public class MultiplexingLucenePropertyI
         Tree idx = createIndex(root.getTree("/"), "test1", ImmutableSet.of("foo", "bar", "baz"));
         idx.setProperty(createProperty(ORDERED_PROP_NAMES, ImmutableSet.of("foo", "baz"), STRINGS));
         Tree propIdx = idx.addChild(PROP_NODE).addChild("baz");
-        propIdx.setProperty(LuceneIndexConstants.PROP_TYPE, PropertyType.TYPENAME_LONG);
+        propIdx.setProperty(FulltextIndexConstants.PROP_TYPE, PropertyType.TYPENAME_LONG);
         root.commit();
 
         int firstPropSize = 25;
@@ -233,7 +240,7 @@ public class MultiplexingLucenePropertyI
         root.commit();
 
         assertOrderedQuery("select [jcr:path] from [nt:base] where [bar] = 'baz' order by [foo] asc, [baz] desc",
-                LucenePropertyIndexTest.getSortedPaths(tuples));
+            LucenePropertyIndexTest.getSortedPaths(tuples));
     }
 
     private List<String> getIndexDirNames(String indexName){

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/NodeStateAnalyzerFactoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/NodeStateAnalyzerFactoryTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/NodeStateAnalyzerFactoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/NodeStateAnalyzerFactoryTest.java Tue Sep 25 12:24:15 2018
@@ -95,8 +95,8 @@ public class NodeStateAnalyzerFactoryTes
         assertEquals(WhitespaceTokenizerFactory.class.getName(), analyzer.getTokenizer().getClassArg());
 
         nb.child(ANL_TOKENIZER)
-                .setProperty(ANL_NAME, "pathhierarchy")
-                .setProperty("delimiter", "#");
+            .setProperty(ANL_NAME, "pathhierarchy")
+            .setProperty("delimiter", "#");
         analyzer = (TokenizerChain) factory.createInstance(nb.getNodeState());
         assertEquals(PathHierarchyTokenizerFactory.class.getName(), analyzer.getTokenizer().getClassArg());
         assertEquals('#', getValue(analyzer.getTokenizer(), "delimiter"));
@@ -172,7 +172,7 @@ public class NodeStateAnalyzerFactoryTes
         createFileNode(nb, "foo", testData);
 
         NodeStateResourceLoader loader = new NodeStateResourceLoader(nb.getNodeState(),
-                new ClasspathResourceLoader());
+            new ClasspathResourceLoader());
         assertArrayEquals(testData, IOUtils.toByteArray(loader.openResource("foo")));
     }
 

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/ResultCountingIndexProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/ResultCountingIndexProvider.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/ResultCountingIndexProvider.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/ResultCountingIndexProvider.java Tue Sep 25 12:24:15 2018
@@ -158,4 +158,4 @@ class ResultCountingIndexProvider implem
             };
         }
     }
-}
+}
\ No newline at end of file

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/SuggestionIntervalTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/SuggestionIntervalTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/SuggestionIntervalTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/SuggestionIntervalTest.java Tue Sep 25 12:24:15 2018
@@ -16,8 +16,20 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.lucene;
 
-import com.google.common.collect.Sets;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_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.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+import javax.jcr.query.Query;
+
 import org.apache.jackrabbit.JcrConstants;
+import org.apache.jackrabbit.oak.InitialContent;
 import org.apache.jackrabbit.oak.Oak;
 import org.apache.jackrabbit.oak.api.ContentRepository;
 import org.apache.jackrabbit.oak.api.QueryEngine;
@@ -25,7 +37,9 @@ import org.apache.jackrabbit.oak.api.Res
 import org.apache.jackrabbit.oak.api.ResultRow;
 import org.apache.jackrabbit.oak.api.Tree;
 import org.apache.jackrabbit.oak.api.Type;
-import org.apache.jackrabbit.oak.InitialContent;
+import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants;
+import org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition;
+import org.apache.jackrabbit.oak.plugins.index.search.IndexFormatVersion;
 import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 import org.apache.jackrabbit.oak.spi.commit.Observer;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
@@ -34,17 +48,7 @@ import org.apache.jackrabbit.oak.stats.C
 import org.junit.After;
 import org.junit.Test;
 
-import javax.jcr.query.Query;
-import java.util.Set;
-import java.util.concurrent.TimeUnit;
-
-import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_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.INDEX_RULES;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import com.google.common.collect.Sets;
 
 public class SuggestionIntervalTest extends AbstractQueryTest {
 
@@ -55,12 +59,12 @@ public class SuggestionIntervalTest exte
         LuceneIndexProvider provider = new LuceneIndexProvider();
 
         ContentRepository repository = new Oak()
-                .with(new InitialContent())
-                .with(new OpenSecurityProvider())
-                .with((QueryIndexProvider) provider)
-                .with((Observer) provider)
-                .with(new LuceneIndexEditorProvider())
-                .createContentRepository();
+            .with(new InitialContent())
+            .with(new OpenSecurityProvider())
+            .with((QueryIndexProvider) provider)
+            .with((Observer) provider)
+            .with(new LuceneIndexEditorProvider())
+            .createContentRepository();
 
         clock = new Clock.Virtual();
         try {
@@ -79,24 +83,24 @@ public class SuggestionIntervalTest exte
     }
 
     private Tree createSuggestIndex(String indexedNodeType)
-            throws Exception {
+        throws Exception {
         String indexName = "lucene-suggest";
         Tree def = root.getTree("/" + INDEX_DEFINITIONS_NAME)
-                .addChild(indexName);
+            .addChild(indexName);
         def.setProperty(JcrConstants.JCR_PRIMARYTYPE, INDEX_DEFINITIONS_NODE_TYPE);
         def.setProperty(TYPE_PROPERTY_NAME, LuceneIndexConstants.TYPE_LUCENE);
         def.setProperty(REINDEX_PROPERTY_NAME, true);
         def.setProperty("name", indexName);
-        def.setProperty(LuceneIndexConstants.COMPAT_MODE, IndexFormatVersion.V2.getVersion());
+        def.setProperty(FulltextIndexConstants.COMPAT_MODE, IndexFormatVersion.V2.getVersion());
 
-        Tree propertyIdxDef = def.addChild(INDEX_RULES)
-                .addChild(indexedNodeType)
-                .addChild(LuceneIndexConstants.PROP_NODE)
-                .addChild("indexedProperty");
+        Tree propertyIdxDef = def.addChild(FulltextIndexConstants.INDEX_RULES)
+            .addChild(indexedNodeType)
+            .addChild(FulltextIndexConstants.PROP_NODE)
+            .addChild("indexedProperty");
         propertyIdxDef.setProperty("propertyIndex", true);
         propertyIdxDef.setProperty("analyzed", true);
         propertyIdxDef.setProperty("useInSuggest", true);
-        propertyIdxDef.setProperty("name", LuceneIndexConstants.PROPDEF_PROP_NODE_NAME);
+        propertyIdxDef.setProperty("name", FulltextIndexConstants.PROPDEF_PROP_NODE_NAME);
 
         return def;
     }
@@ -134,7 +138,7 @@ public class SuggestionIntervalTest exte
 
         //add a node... this should kick in a suggestions udpate too as enough time has passed
         root.getTree("/").addChild("indexedNode")
-                .setProperty(JcrConstants.JCR_PRIMARYTYPE, nodeType, Type.NAME);
+            .setProperty(JcrConstants.JCR_PRIMARYTYPE, nodeType, Type.NAME);
         root.commit();
 
         Set<String> suggestions = getSuggestions(nodeType, "indexedn");
@@ -156,7 +160,7 @@ public class SuggestionIntervalTest exte
 
         //add a node that get part in the index
         root.getTree("/").addChild("indexedNode")
-                .setProperty(JcrConstants.JCR_PRIMARYTYPE, nodeType, Type.NAME);
+            .setProperty(JcrConstants.JCR_PRIMARYTYPE, nodeType, Type.NAME);
         root.commit();
 
         //wait for suggestions refresh time
@@ -165,7 +169,7 @@ public class SuggestionIntervalTest exte
 
         //push a change which should not make any change in the index but yet should help update suggestions
         root.getTree("/").addChild("some-non-index-change")
-                .setProperty(JcrConstants.JCR_PRIMARYTYPE, "oak:Unstructured", Type.NAME);
+            .setProperty(JcrConstants.JCR_PRIMARYTYPE, "oak:Unstructured", Type.NAME);
         root.commit();
 
         Set<String> suggestions = getSuggestions(nodeType, "indexedn");
@@ -182,7 +186,7 @@ public class SuggestionIntervalTest exte
         //initial content which also updates suggestions with "indexedNode"
         Tree indexDef = createSuggestIndex(nodeType);
         root.getTree("/").addChild("indexedNode")
-                .setProperty(JcrConstants.JCR_PRIMARYTYPE, nodeType);
+            .setProperty(JcrConstants.JCR_PRIMARYTYPE, nodeType);
         root.commit();
         String suggUpdateTime1 = getSuggestionLastUpdated(indexDef);
 
@@ -198,13 +202,13 @@ public class SuggestionIntervalTest exte
         //push a change which should not make any change in the index but would kick in suggestion logic
         //YET, suggestion logic shouldn't do any change
         root.getTree("/").addChild("some-non-index-change")
-                .setProperty(JcrConstants.JCR_PRIMARYTYPE, "oak:Unstructured");
+            .setProperty(JcrConstants.JCR_PRIMARYTYPE, "oak:Unstructured");
         root.commit();
 
         String suggUpdateTime2 = getSuggestionLastUpdated(indexDef);
 
         assertEquals("Suggestions shouldn't rebuild un-necessarily. Update times are different",
-                suggUpdateTime1, suggUpdateTime2);
+            suggUpdateTime1, suggUpdateTime2);
     }
 
     private String getSuggestionLastUpdated(Tree indexDef) {

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/TestUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/TestUtil.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/TestUtil.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/TestUtil.java Tue Sep 25 12:24:15 2018
@@ -19,6 +19,17 @@
 
 package org.apache.jackrabbit.oak.plugins.index.lucene;
 
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.collect.ImmutableSet.of;
+import static org.apache.jackrabbit.JcrConstants.JCR_CONTENT;
+import static org.apache.jackrabbit.oak.api.Type.STRINGS;
+import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_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.FieldFactory.newPathField;
+import static org.apache.jackrabbit.oak.plugins.memory.PropertyStates.createProperty;
+
 import java.io.IOException;
 import java.util.List;
 import java.util.Set;
@@ -38,8 +49,10 @@ import org.apache.jackrabbit.oak.api.Tre
 import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.commons.PathUtils;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
-import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.IndexingMode;
 import org.apache.jackrabbit.oak.plugins.index.lucene.util.LuceneIndexHelper;
+import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants;
+import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.IndexingMode;
+import org.apache.jackrabbit.oak.plugins.index.search.IndexFormatVersion;
 import org.apache.jackrabbit.oak.plugins.memory.MemoryNodeStore;
 import org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState;
 import org.apache.jackrabbit.oak.plugins.name.NamespaceEditorProvider;
@@ -62,42 +75,29 @@ import org.apache.lucene.store.IndexOutp
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-import static com.google.common.base.Preconditions.checkNotNull;
-import static com.google.common.collect.ImmutableSet.of;
-import static org.apache.jackrabbit.JcrConstants.JCR_CONTENT;
-import static org.apache.jackrabbit.oak.api.Type.STRINGS;
-import static org.apache.jackrabbit.oak.plugins.index.IndexConstants.INDEX_DEFINITIONS_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.FieldFactory.newPathField;
-import static org.apache.jackrabbit.oak.plugins.memory.PropertyStates.createProperty;
-
 public class TestUtil {
     private static final AtomicInteger COUNTER = new AtomicInteger();
 
     public static final String NT_TEST = "oak:TestNode";
 
-    public static final String TEST_NODE_TYPE = "[oak:TestNode]\n" +
-            " - * (UNDEFINED) multiple\n" +
-            " - * (UNDEFINED)\n" +
-            " + * (nt:base) = oak:TestNode VERSION";
+    public static final String TEST_NODE_TYPE = "[oak:TestNode]\n" + " - * (UNDEFINED) multiple\n"
+        + " - * (UNDEFINED)\n" + " + * (nt:base) = oak:TestNode VERSION";
 
     static void useV2(NodeBuilder idxNb) {
         if (!IndexFormatVersion.getDefault().isAtLeast(IndexFormatVersion.V2)) {
-            idxNb.setProperty(LuceneIndexConstants.COMPAT_MODE, IndexFormatVersion.V2.getVersion());
+            idxNb.setProperty(FulltextIndexConstants.COMPAT_MODE, IndexFormatVersion.V2.getVersion());
         }
     }
 
     static void useV2(Tree idxTree) {
         if (!IndexFormatVersion.getDefault().isAtLeast(IndexFormatVersion.V2)) {
-            idxTree.setProperty(LuceneIndexConstants.COMPAT_MODE, IndexFormatVersion.V2.getVersion());
+            idxTree.setProperty(FulltextIndexConstants.COMPAT_MODE, IndexFormatVersion.V2.getVersion());
         }
     }
 
     public static NodeBuilder newLuceneIndexDefinitionV2(
-            @NotNull NodeBuilder index, @NotNull String name,
-            @Nullable Set<String> propertyTypes) {
+        @NotNull NodeBuilder index, @NotNull String name,
+        @Nullable Set<String> propertyTypes) {
         NodeBuilder nb = LuceneIndexHelper.newLuceneIndexDefinition(index, name, propertyTypes, null, null, null);
         useV2(nb);
         return nb;
@@ -107,49 +107,49 @@ public class TestUtil {
         return enableForFullText(props, propName, false);
     }
 
-    public static Tree enableForFullText(Tree props, String propName,  boolean regex) {
+    public static Tree enableForFullText(Tree props, String propName, boolean regex) {
         Tree prop = props.addChild(unique("prop"));
-        prop.setProperty(LuceneIndexConstants.PROP_NAME, propName);
-        prop.setProperty(LuceneIndexConstants.PROP_PROPERTY_INDEX, true);
-        prop.setProperty(LuceneIndexConstants.PROP_IS_REGEX, regex);
-        prop.setProperty(LuceneIndexConstants.PROP_NODE_SCOPE_INDEX, true);
-        prop.setProperty(LuceneIndexConstants.PROP_ANALYZED, true);
-        prop.setProperty(LuceneIndexConstants.PROP_USE_IN_EXCERPT, true);
-        prop.setProperty(LuceneIndexConstants.PROP_USE_IN_SPELLCHECK, true);
+        prop.setProperty(FulltextIndexConstants.PROP_NAME, propName);
+        prop.setProperty(FulltextIndexConstants.PROP_PROPERTY_INDEX, true);
+        prop.setProperty(FulltextIndexConstants.PROP_IS_REGEX, regex);
+        prop.setProperty(FulltextIndexConstants.PROP_NODE_SCOPE_INDEX, true);
+        prop.setProperty(FulltextIndexConstants.PROP_ANALYZED, true);
+        prop.setProperty(FulltextIndexConstants.PROP_USE_IN_EXCERPT, true);
+        prop.setProperty(FulltextIndexConstants.PROP_USE_IN_SPELLCHECK, true);
         return prop;
     }
-    
+
     public static Tree enableForOrdered(Tree props, String propName) {
         Tree prop = enablePropertyIndex(props, propName, false);
         prop.setProperty("ordered", true);
         return prop;
     }
 
-    public static Tree enablePropertyIndex(Tree props, String propName,  boolean regex) {
+    public static Tree enablePropertyIndex(Tree props, String propName, boolean regex) {
         Tree prop = props.addChild(unique("prop"));
-        prop.setProperty(LuceneIndexConstants.PROP_NAME, propName);
-        prop.setProperty(LuceneIndexConstants.PROP_PROPERTY_INDEX, true);
-        prop.setProperty(LuceneIndexConstants.PROP_IS_REGEX, regex);
-        prop.setProperty(LuceneIndexConstants.PROP_NODE_SCOPE_INDEX, false);
-        prop.setProperty(LuceneIndexConstants.PROP_ANALYZED, false);
+        prop.setProperty(FulltextIndexConstants.PROP_NAME, propName);
+        prop.setProperty(FulltextIndexConstants.PROP_PROPERTY_INDEX, true);
+        prop.setProperty(FulltextIndexConstants.PROP_IS_REGEX, regex);
+        prop.setProperty(FulltextIndexConstants.PROP_NODE_SCOPE_INDEX, false);
+        prop.setProperty(FulltextIndexConstants.PROP_ANALYZED, false);
         return prop;
     }
 
     public static Tree enableFunctionIndex(Tree props, String function) {
         Tree prop = props.addChild(unique("prop"));
-        prop.setProperty(LuceneIndexConstants.PROP_FUNCTION, function);
+        prop.setProperty(FulltextIndexConstants.PROP_FUNCTION, function);
         return prop;
     }
 
-    public static AggregatorBuilder newNodeAggregator(Tree indexDefn){
+    public static AggregatorBuilder newNodeAggregator(Tree indexDefn) {
         return new AggregatorBuilder(indexDefn);
     }
 
-    public static Tree newRulePropTree(Tree indexDefn, String typeName){
-        Tree rules = indexDefn.addChild(LuceneIndexConstants.INDEX_RULES);
+    public static Tree newRulePropTree(Tree indexDefn, String typeName) {
+        Tree rules = indexDefn.addChild(FulltextIndexConstants.INDEX_RULES);
         rules.setOrderableChildren(true);
         Tree rule = rules.addChild(typeName);
-        Tree props = rule.addChild(LuceneIndexConstants.PROP_NODE);
+        Tree props = rule.addChild(FulltextIndexConstants.PROP_NODE);
         props.setOrderableChildren(true);
         return props;
     }
@@ -161,7 +161,7 @@ public class TestUtil {
         return nb;
     }
 
-    public static Document newDoc(String path){
+    public static Document newDoc(String path) {
         Document doc = new Document();
         doc.add(newPathField(path));
         return doc;
@@ -171,54 +171,53 @@ public class TestUtil {
         private final Tree aggs;
 
         private AggregatorBuilder(Tree indexDefn) {
-            this.aggs = indexDefn.addChild(LuceneIndexConstants.AGGREGATES);
+            this.aggs = indexDefn.addChild(FulltextIndexConstants.AGGREGATES);
         }
 
-        AggregatorBuilder newRuleWithName(String primaryType,
-                                          List<String> includes){
+        AggregatorBuilder newRuleWithName(String primaryType, List<String> includes) {
             Tree agg = aggs.addChild(primaryType);
-            for (String include : includes){
-                agg.addChild(unique("include")).setProperty(LuceneIndexConstants.AGG_PATH, include);
+            for (String include : includes) {
+                agg.addChild(unique("include")).setProperty(FulltextIndexConstants.AGG_PATH, include);
             }
             return this;
         }
     }
 
-    static String unique(String name){
+    static String unique(String name) {
         return name + COUNTER.getAndIncrement();
     }
 
-    public static NodeBuilder registerTestNodeType(NodeBuilder builder){
+    public static NodeBuilder registerTestNodeType(NodeBuilder builder) {
         registerNodeType(builder, TEST_NODE_TYPE);
         return builder;
     }
 
-    public static void registerNodeType(NodeBuilder builder, String nodeTypeDefn){
-        //Taken from org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent
+    public static void registerNodeType(NodeBuilder builder, String nodeTypeDefn) {
+        // Taken from
+        // org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent
         NodeState base = ModifiedNodeState.squeeze(builder.getNodeState());
         NodeStore store = new MemoryNodeStore(base);
-        Root root = RootFactory.createSystemRoot(
-                store, new EditorHook(new CompositeEditorProvider(
-                        new NamespaceEditorProvider(),
-                        new TypeEditorProvider())), null, null, null);
+        Root root = RootFactory.createSystemRoot(store,
+            new EditorHook(new CompositeEditorProvider(new NamespaceEditorProvider(), new TypeEditorProvider())),
+            null, null, null);
         NodeTypeRegistry.register(root, IOUtils.toInputStream(nodeTypeDefn), "test node types");
         NodeState target = store.getRoot();
         target.compareAgainstBaseState(base, new ApplyDiff(builder));
     }
 
-    public static Tree createNodeWithType(Tree t, String nodeName, String typeName){
+    public static Tree createNodeWithType(Tree t, String nodeName, String typeName) {
         t = t.addChild(nodeName);
         t.setProperty(JcrConstants.JCR_PRIMARYTYPE, typeName, Type.NAME);
         return t;
     }
 
-    public static NodeBuilder createNodeWithType(NodeBuilder builder, String nodeName, String typeName){
+    public static NodeBuilder createNodeWithType(NodeBuilder builder, String nodeName, String typeName) {
         builder = builder.child(nodeName);
         builder.setProperty(JcrConstants.JCR_PRIMARYTYPE, typeName, Type.NAME);
         return builder;
     }
 
-    public static Tree createFileNode(Tree tree, String name, Blob content, String mimeType){
+    public static Tree createFileNode(Tree tree, String name, Blob content, String mimeType) {
         Tree fileNode = tree.addChild(name);
         fileNode.setProperty(JcrConstants.JCR_PRIMARYTYPE, JcrConstants.NT_FILE, Type.NAME);
         Tree jcrContent = fileNode.addChild(JCR_CONTENT);
@@ -233,7 +232,7 @@ public class TestUtil {
                 INDEX_DEFINITIONS_NODE_TYPE, Type.NAME);
         def.setProperty(TYPE_PROPERTY_NAME, LuceneIndexConstants.TYPE_LUCENE);
         def.setProperty(REINDEX_PROPERTY_NAME, true);
-        def.setProperty(createProperty(LuceneIndexConstants.INCLUDE_PROPERTY_TYPES,
+        def.setProperty(createProperty(FulltextIndexConstants.INCLUDE_PROPERTY_TYPES,
                 of(PropertyType.TYPENAME_STRING, PropertyType.TYPENAME_BINARY), STRINGS));
         return index.getChild(INDEX_DEFINITIONS_NAME).getChild(name);
     }
@@ -244,12 +243,12 @@ public class TestUtil {
         }
     }
 
-    public static NodeBuilder enableIndexingMode(NodeBuilder builder, IndexingMode indexingMode){
+    public static NodeBuilder enableIndexingMode(NodeBuilder builder, IndexingMode indexingMode) {
         builder.setProperty(createAsyncProperty(indexingMode));
         return builder;
     }
 
-    public static Tree enableIndexingMode(Tree tree, IndexingMode indexingMode){
+    public static Tree enableIndexingMode(Tree tree, IndexingMode indexingMode) {
         tree.setProperty(createAsyncProperty(indexingMode));
         return tree;
     }
@@ -263,13 +262,13 @@ public class TestUtil {
     }
 
     private static PropertyState createAsyncProperty(String indexingMode) {
-        return createProperty(IndexConstants.ASYNC_PROPERTY_NAME, of(indexingMode , "async"), STRINGS);
+        return createProperty(IndexConstants.ASYNC_PROPERTY_NAME, of(indexingMode, "async"), STRINGS);
     }
 
     private static PropertyState createAsyncProperty(IndexingMode indexingMode) {
-        switch(indexingMode) {
-            case NRT  :
-            case SYNC :
+        switch (indexingMode) {
+            case NRT:
+            case SYNC:
                 return createAsyncProperty(indexingMode.asyncValueName());
             case ASYNC:
                 return createProperty(IndexConstants.ASYNC_PROPERTY_NAME, of("async"), STRINGS);
@@ -282,13 +281,13 @@ public class TestUtil {
         public EditorProvider delegate;
 
         @Override
-        public Editor getRootEditor(NodeState before, NodeState after, NodeBuilder builder, CommitInfo info) throws CommitFailedException {
-            if (delegate != null){
+        public Editor getRootEditor(NodeState before, NodeState after, NodeBuilder builder, CommitInfo info)
+            throws CommitFailedException {
+            if (delegate != null) {
                 return delegate.getRootEditor(before, after, builder, info);
             }
             return null;
         }
 
-
     }
 }

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/AbstractActiveDeletedBlobTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/AbstractActiveDeletedBlobTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/AbstractActiveDeletedBlobTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/AbstractActiveDeletedBlobTest.java Tue Sep 25 12:24:15 2018
@@ -39,10 +39,11 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.blob.datastore.BlobTracker;
 import org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate;
 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.LuceneIndexConstants;
 import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorProvider;
 import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider;
+import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants;
+import org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition;
 import org.apache.jackrabbit.oak.plugins.memory.PropertyStates;
 import org.apache.jackrabbit.oak.query.AbstractQueryTest;
 import org.apache.jackrabbit.oak.spi.blob.BlobOptions;
@@ -99,8 +100,8 @@ public abstract class AbstractActiveDele
         def.setProperty(TYPE_PROPERTY_NAME, LuceneIndexConstants.TYPE_LUCENE);
         def.setProperty(REINDEX_PROPERTY_NAME, true);
         def.setProperty(ASYNC_PROPERTY_NAME, "async");
-        def.setProperty(LuceneIndexConstants.FULL_TEXT_ENABLED, false);
-        def.setProperty(PropertyStates.createProperty(LuceneIndexConstants.INCLUDE_PROPERTY_NAMES, propNames, Type.STRINGS));
+        def.setProperty(FulltextIndexConstants.FULL_TEXT_ENABLED, false);
+        def.setProperty(PropertyStates.createProperty(FulltextIndexConstants.INCLUDE_PROPERTY_NAMES, propNames, Type.STRINGS));
         def.setProperty(LuceneIndexConstants.SAVE_DIR_LISTING, true);
         return index.getChild(INDEX_DEFINITIONS_NAME).getChild(name);
     }

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ActiveDeletedBlobCollectionIT.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ActiveDeletedBlobCollectionIT.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ActiveDeletedBlobCollectionIT.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ActiveDeletedBlobCollectionIT.java Tue Sep 25 12:24:15 2018
@@ -30,12 +30,12 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.document.mongo.MongoBlobStore;
 import org.apache.jackrabbit.oak.plugins.document.util.MongoConnection;
 import org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate;
-import org.apache.jackrabbit.oak.plugins.index.lucene.ExtractedTextCache;
 import org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier;
-import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorProvider;
-import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider;
 import org.apache.jackrabbit.oak.plugins.index.lucene.directory.ActiveDeletedBlobCollectorFactory.ActiveDeletedBlobCollectorImpl;
 
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider;
+import org.apache.jackrabbit.oak.plugins.index.search.ExtractedTextCache;
 import org.apache.jackrabbit.oak.spi.commit.Observer;
 import org.apache.jackrabbit.oak.spi.mount.Mounts;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ActiveDeletedBlobSyncTrackerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ActiveDeletedBlobSyncTrackerTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ActiveDeletedBlobSyncTrackerTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ActiveDeletedBlobSyncTrackerTest.java Tue Sep 25 12:24:15 2018
@@ -31,12 +31,12 @@ import org.apache.jackrabbit.oak.plugins
 import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
 import org.apache.jackrabbit.oak.plugins.blob.datastore.OakFileDataStore;
 import org.apache.jackrabbit.oak.plugins.index.AsyncIndexUpdate;
-import org.apache.jackrabbit.oak.plugins.index.lucene.ExtractedTextCache;
 import org.apache.jackrabbit.oak.plugins.index.lucene.IndexCopier;
-import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorProvider;
-import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider;
 import org.apache.jackrabbit.oak.plugins.index.lucene.directory.ActiveDeletedBlobCollectorFactory
     .ActiveDeletedBlobCollectorImpl;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexEditorProvider;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexProvider;
+import org.apache.jackrabbit.oak.plugins.index.search.ExtractedTextCache;
 import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
 import org.apache.jackrabbit.oak.segment.file.FileStore;
 import org.apache.jackrabbit.oak.segment.file.FileStoreBuilder;
@@ -45,14 +45,12 @@ import org.apache.jackrabbit.oak.spi.com
 import org.apache.jackrabbit.oak.spi.mount.Mounts;
 import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
 import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
-import org.junit.Ignore;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
 import static com.google.common.collect.ImmutableSet.of;
 import static com.google.common.collect.Lists.newArrayList;
-import static com.google.common.collect.Sets.intersection;
 import static com.google.common.collect.Sets.newHashSet;
 import static org.apache.jackrabbit.oak.spi.cluster.ClusterRepositoryInfo.getOrCreateId;
 import static org.junit.Assert.assertEquals;

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/BufferedOakDirectoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/BufferedOakDirectoryTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/BufferedOakDirectoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/BufferedOakDirectoryTest.java Tue Sep 25 12:24:15 2018
@@ -28,7 +28,7 @@ import com.google.common.collect.Sets;
 import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.oak.api.PropertyState;
 import org.apache.jackrabbit.oak.commons.junit.LogCustomizer;
-import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexDefinition;
 import org.apache.jackrabbit.oak.plugins.memory.EmptyNodeState;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -38,10 +38,10 @@ import org.apache.lucene.store.IndexInpu
 import org.apache.lucene.store.IndexOutput;
 import org.junit.Test;
 
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.INDEX_DATA_CHILD_NAME;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.directory.BufferedOakDirectory.DELETE_THRESHOLD_UNTIL_REOPEN;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.directory.BufferedOakDirectory.ENABLE_WRITING_SINGLE_BLOB_INDEX_FILE_PARAM;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.directory.BufferedOakDirectory.reReadCommandLineParam;
+import static org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.INDEX_DATA_CHILD_NAME;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -405,7 +405,7 @@ public class BufferedOakDirectoryTest {
     }
 
     private Directory createDir(NodeBuilder builder, boolean buffered) {
-        IndexDefinition def = new IndexDefinition(root, builder.getNodeState(), "/foo");
+        LuceneIndexDefinition def = new LuceneIndexDefinition(root, builder.getNodeState(), "/foo");
         if (buffered) {
             return new BufferedOakDirectory(builder, INDEX_DATA_CHILD_NAME, def, null);
         } else {

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ChunkedOakDirectoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ChunkedOakDirectoryTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ChunkedOakDirectoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/ChunkedOakDirectoryTest.java Tue Sep 25 12:24:15 2018
@@ -22,8 +22,8 @@ package org.apache.jackrabbit.oak.plugin
 import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.api.PropertyState;
-import org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition;
-import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexDefinition;
+import org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants;
 import org.apache.jackrabbit.oak.segment.SegmentNodeStore;
 import org.apache.jackrabbit.oak.segment.SegmentNodeStoreBuilders;
 import org.apache.jackrabbit.oak.segment.SegmentTestConstants;
@@ -54,7 +54,7 @@ public class ChunkedOakDirectoryTest ext
 
     @Test
     public void writes_CustomBlobSize() throws Exception{
-        builder.setProperty(LuceneIndexConstants.BLOB_SIZE, 300);
+        builder.setProperty(FulltextIndexConstants.BLOB_SIZE, 300);
         Directory dir = createDir(builder, false, "/foo");
         assertWrites(dir, 300);
     }
@@ -74,7 +74,7 @@ public class ChunkedOakDirectoryTest ext
         int blobSize = minFileSize + 1000;
 
         builder = nodeStore.getRoot().builder();
-        builder.setProperty(LuceneIndexConstants.BLOB_SIZE, blobSize);
+        builder.setProperty(FulltextIndexConstants.BLOB_SIZE, blobSize);
         Directory dir = createDir(builder, false, indexPath);
 
         IndexOutput o3 = dir.createOutput("test1.txt", IOContext.DEFAULT);
@@ -99,7 +99,7 @@ public class ChunkedOakDirectoryTest ext
     }
 
     @Override
-    OakDirectoryBuilder getOakDirectoryBuilder(NodeBuilder builder, IndexDefinition indexDefinition) {
+    OakDirectoryBuilder getOakDirectoryBuilder(NodeBuilder builder, LuceneIndexDefinition indexDefinition) {
         return new OakDirectoryBuilder(builder, indexDefinition, false);
     }
 

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectoryTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/CopyOnWriteDirectoryTest.java Tue Sep 25 12:24:15 2018
@@ -31,8 +31,7 @@ import com.google.common.io.Closer;
 import org.apache.jackrabbit.oak.plugins.document.DocumentMKBuilderProvider;
 import org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore;
 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.writer.IndexWriterUtils;
+import org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexDefinition;
 import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
 import org.apache.jackrabbit.oak.spi.commit.EmptyHook;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -40,19 +39,16 @@ import org.apache.lucene.store.Directory
 import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.IndexOutput;
 import org.junit.After;
-import org.junit.Assert;
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
-import static org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition.PROP_UID;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition.STATUS_NODE;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.INDEX_DATA_CHILD_NAME;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.SUGGEST_DATA_CHILD_NAME;
-import static org.junit.Assert.assertEquals;
+import static org.apache.jackrabbit.oak.plugins.index.search.FulltextIndexConstants.INDEX_DATA_CHILD_NAME;
+import static org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition.PROP_UID;
+import static org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition.STATUS_NODE;
 import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
 
@@ -98,7 +94,7 @@ public class CopyOnWriteDirectoryTest {
     // OAK-5238
     @Test
     public void copyOnWrite() throws Exception {
-        IndexDefinition def = new IndexDefinition(ns.getRoot(), ns.getRoot(), "/foo");
+        LuceneIndexDefinition def = new LuceneIndexDefinition(ns.getRoot(), ns.getRoot(), "/foo");
         NodeBuilder builder = ns.getRoot().builder();
         Directory dir = new DefaultDirectoryFactory(copier, null).newInstance(def, builder.child("foo"), INDEX_DATA_CHILD_NAME, false);
         addFiles(dir);
@@ -114,7 +110,7 @@ public class CopyOnWriteDirectoryTest {
         try {
             NodeBuilder builder = ns.getRoot().builder().child("foo");
 
-            IndexDefinition def = new IndexDefinition(ns.getRoot(), builder.getNodeState(), "/foo");
+            LuceneIndexDefinition def = new LuceneIndexDefinition(ns.getRoot(), builder.getNodeState(), "/foo");
             Directory dir = new DefaultDirectoryFactory(copier, null).newInstance(def, builder.child("foo"), INDEX_DATA_CHILD_NAME, false);
             Directory suggestDir = new DefaultDirectoryFactory(copier, null).newInstance(def, builder.child("foo"), SUGGEST_DATA_CHILD_NAME, false);
 
@@ -125,7 +121,7 @@ public class CopyOnWriteDirectoryTest {
             assertFalse("Suggester directory COW-wrapped", suggestDir instanceof CopyOnWriteDirectory);
 
             builder.child(STATUS_NODE).setProperty(PROP_UID, "some_random_string");
-            def = new IndexDefinition(ns.getRoot(), builder.getNodeState(), "/foo");
+            def = new LuceneIndexDefinition(ns.getRoot(), builder.getNodeState(), "/foo");
 
             assertNotNull("Synthetic UID not read by definition", def.getUniqueId());
 

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/FSDirectoryFactoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/FSDirectoryFactoryTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/FSDirectoryFactoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/FSDirectoryFactoryTest.java Tue Sep 25 12:24:15 2018
@@ -25,7 +25,7 @@ import java.util.List;
 import java.util.stream.Collectors;
 
 import org.apache.commons.io.filefilter.DirectoryFileFilter;
-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.util.IndexDefinitionBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -48,7 +48,7 @@ public class FSDirectoryFactoryTest {
 
     @Test
     public void singleIndex() throws Exception{
-        IndexDefinition defn = IndexDefinition.newBuilder(root, idx.getNodeState(), "/fooIndex").build();
+        LuceneIndexDefinition defn = LuceneIndexDefinition.newBuilder(root, idx.getNodeState(), "/fooIndex").build();
         FSDirectoryFactory factory = new FSDirectoryFactory(temporaryFolder.getRoot());
 
         Directory dir = factory.newInstance(defn, idx, ":data", false);
@@ -64,8 +64,8 @@ public class FSDirectoryFactoryTest {
 
     @Test
     public void multiIndexWithSimilarPaths() throws Exception{
-        IndexDefinition defn1 = IndexDefinition.newBuilder(root, idx.getNodeState(), "/content/a/en_us/oak:index/fooIndex").build();
-        IndexDefinition defn2 = IndexDefinition.newBuilder(root, idx.getNodeState(), "/content/b/en_us/oak:index/fooIndex").build();
+        LuceneIndexDefinition defn1 = LuceneIndexDefinition.newBuilder(root, idx.getNodeState(), "/content/a/en_us/oak:index/fooIndex").build();
+        LuceneIndexDefinition defn2 = LuceneIndexDefinition.newBuilder(root, idx.getNodeState(), "/content/b/en_us/oak:index/fooIndex").build();
 
         FSDirectoryFactory factory = new FSDirectoryFactory(temporaryFolder.getRoot());
         factory.newInstance(defn1, idx, ":data", false).close();
@@ -81,7 +81,7 @@ public class FSDirectoryFactoryTest {
 
     @Test
     public void reuseExistingDir() throws Exception{
-        IndexDefinition defn = IndexDefinition.newBuilder(root, idx.getNodeState(), "/fooIndex").build();
+        LuceneIndexDefinition defn = LuceneIndexDefinition.newBuilder(root, idx.getNodeState(), "/fooIndex").build();
         FSDirectoryFactory factory = new FSDirectoryFactory(temporaryFolder.getRoot());
 
         Directory dir = factory.newInstance(defn, idx, ":data", false);
@@ -98,7 +98,7 @@ public class FSDirectoryFactoryTest {
 
     @Test
     public void directoryMapping() throws Exception{
-        IndexDefinition defn = IndexDefinition.newBuilder(root, idx.getNodeState(), "/fooIndex").build();
+        LuceneIndexDefinition defn = LuceneIndexDefinition.newBuilder(root, idx.getNodeState(), "/fooIndex").build();
         FSDirectoryFactory factory = new FSDirectoryFactory(temporaryFolder.getRoot());
 
         Directory dir1 = factory.newInstance(defn, idx, ":data", false);

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexConsistencyCheckerTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexConsistencyCheckerTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexConsistencyCheckerTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexConsistencyCheckerTest.java Tue Sep 25 12:24:15 2018
@@ -30,12 +30,13 @@ import org.apache.commons.io.IOUtils;
 import org.apache.jackrabbit.oak.InitialContentHelper;
 import org.apache.jackrabbit.oak.api.Blob;
 import org.apache.jackrabbit.oak.api.Type;
-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.OakAnalyzer;
 import org.apache.jackrabbit.oak.plugins.index.lucene.directory.IndexConsistencyChecker.Level;
 import org.apache.jackrabbit.oak.plugins.index.lucene.directory.IndexConsistencyChecker.Result;
 import org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.MultiplexersLucene;
+import org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition;
 import org.apache.jackrabbit.oak.plugins.memory.ArrayBasedBlob;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
@@ -118,7 +119,7 @@ public class IndexConsistencyCheckerTest
 
     @Test
     public void validIndexTest() throws Exception{
-        IndexDefinition defn = IndexDefinition.newBuilder(rootState, idx.getNodeState(), "/fooIndex").build();
+        LuceneIndexDefinition defn = LuceneIndexDefinition.newBuilder(rootState, idx.getNodeState(), "/fooIndex").build();
         Directory dir = new OakDirectory(idx, ":data", defn, false);
         createIndex(dir, 10);
 
@@ -143,7 +144,7 @@ public class IndexConsistencyCheckerTest
 
     @Test
     public void missingFile() throws Exception{
-        IndexDefinition defn = IndexDefinition.newBuilder(rootState, idx.getNodeState(), "/fooIndex").build();
+        LuceneIndexDefinition defn = LuceneIndexDefinition.newBuilder(rootState, idx.getNodeState(), "/fooIndex").build();
         Directory dir = new OakDirectory(idx, ":data", defn, false);
         createIndex(dir, 10);
 
@@ -165,7 +166,7 @@ public class IndexConsistencyCheckerTest
 
     @Test
     public void badFile() throws Exception{
-        IndexDefinition defn = IndexDefinition.newBuilder(rootState, idx.getNodeState(), "/fooIndex").build();
+        LuceneIndexDefinition defn = LuceneIndexDefinition.newBuilder(rootState, idx.getNodeState(), "/fooIndex").build();
         Directory dir = new OakDirectory(idx, ":data", defn, false);
         createIndex(dir, 10);
 

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectoryTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectoryTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/IndexRootDirectoryTest.java Tue Sep 25 12:24:15 2018
@@ -26,7 +26,7 @@ import java.util.List;
 import com.google.common.base.Strings;
 import org.apache.commons.io.FileUtils;
 import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
-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.LuceneIndexEditorContext;
 import org.apache.jackrabbit.oak.plugins.index.lucene.hybrid.NRTIndex;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -220,8 +220,8 @@ public class IndexRootDirectoryTest {
         LuceneIndexEditorContext.configureUniqueId(resetBuilder());
     }
 
-    private IndexDefinition getDefn(){
-        return new IndexDefinition(root, builder.getNodeState(), "/foo");
+    private LuceneIndexDefinition getDefn(){
+        return new LuceneIndexDefinition(root, builder.getNodeState(), "/foo");
     }
 
     private static LocalIndexDir getDir(String jcrPath, List<LocalIndexDir> dirs){

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/LuceneIndexDumperTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/LuceneIndexDumperTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/LuceneIndexDumperTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/LuceneIndexDumperTest.java Tue Sep 25 12:24:15 2018
@@ -22,7 +22,7 @@ package org.apache.jackrabbit.oak.plugin
 import java.io.File;
 
 import org.apache.jackrabbit.oak.InitialContentHelper;
-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.util.IndexDefinitionBuilder;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.MultiplexersLucene;
 import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
@@ -46,7 +46,7 @@ public class LuceneIndexDumperTest {
 
     @Test
     public void directoryDump() throws Exception{
-        IndexDefinition defn = IndexDefinition.newBuilder(rootState, idx.getNodeState(), "/fooIndex").build();
+        LuceneIndexDefinition defn = LuceneIndexDefinition.newBuilder(rootState, idx.getNodeState(), "/fooIndex").build();
 
         long size = 0;
 

Modified: jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/LuceneIndexImporterTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/LuceneIndexImporterTest.java?rev=1841926&r1=1841925&r2=1841926&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/LuceneIndexImporterTest.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/directory/LuceneIndexImporterTest.java Tue Sep 25 12:24:15 2018
@@ -27,7 +27,7 @@ import java.util.Set;
 
 import com.google.common.collect.ImmutableSet;
 import org.apache.jackrabbit.oak.InitialContentHelper;
-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.LuceneIndexEditorContext;
 import org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder;
 import org.apache.jackrabbit.oak.plugins.index.lucene.writer.MultiplexersLucene;
@@ -41,9 +41,9 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
-import static org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition.PROP_UID;
-import static org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition.STATUS_NODE;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.TestUtil.createFile;
+import static org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition.PROP_UID;
+import static org.apache.jackrabbit.oak.plugins.index.search.IndexDefinition.STATUS_NODE;
 import static org.junit.Assert.*;
 
 public class LuceneIndexImporterTest {
@@ -56,7 +56,7 @@ public class LuceneIndexImporterTest {
     @Test
     public void exportAndImport() throws Exception{
         NodeState baseIndexState = idx.getNodeState();
-        IndexDefinition defn = IndexDefinition.newBuilder(rootState, baseIndexState, "/oak:index/fooIndex").build();
+        LuceneIndexDefinition defn = LuceneIndexDefinition.newBuilder(rootState, baseIndexState, "/oak:index/fooIndex").build();
 
         LuceneIndexEditorContext.configureUniqueId(idx);
 
@@ -101,7 +101,7 @@ public class LuceneIndexImporterTest {
         assertNotNull(importedUid);
     }
 
-    private static void assertDirectoryEquals(IndexDefinition defn, NodeState expected, NodeState actual, String dirName) throws IOException {
+    private static void assertDirectoryEquals(LuceneIndexDefinition defn, NodeState expected, NodeState actual, String dirName) throws IOException {
         OakDirectory dir1 = new OakDirectory(new ReadOnlyBuilder(expected), dirName, defn, true);
         OakDirectory dir2 = new OakDirectory(new ReadOnlyBuilder(actual), dirName, defn, true);
         assertDirectoryEquals(dir1, dir2);