Search in sources :

Example 11 with IndexDefinitionBuilder

use of org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder in project jackrabbit-oak by apache.

the class LucenePropertyIndexTest method refreshIndexDefinition.

@Test
public void refreshIndexDefinition() throws Exception {
    IndexDefinitionBuilder idxb = new IndexDefinitionBuilder().noAsync();
    idxb.indexRule("nt:base").property("foo").propertyIndex();
    Tree idx = root.getTree("/").getChild("oak:index").addChild("test1");
    idxb.build(idx);
    Tree rootTree = root.getTree("/");
    rootTree.addChild("a").setProperty("foo", "bar");
    rootTree.addChild("b").setProperty("bar", "bar");
    root.commit();
    String query = "select * from [nt:base] where [foo] = 'bar'";
    assertPlanAndQuery(query, "lucene:test1(/oak:index/test1)", asList("/a"));
    Tree barProp = root.getTree("/oak:index/test1/indexRules/nt:base/properties").addChild("bar");
    barProp.setProperty("name", "bar");
    barProp.setProperty("propertyIndex", true);
    root.commit();
    query = "select * from [nt:base] where [bar] = 'bar'";
    assertThat(explain(query), not(containsString("lucene:test1(/oak:index/test1)")));
    //Instead of reindex just refresh the index definition so that new index definition gets picked up
    root.getTree("/oak:index/test1").setProperty(LuceneIndexConstants.PROP_REFRESH_DEFN, true);
    root.commit();
    //Plan would reflect new defintion
    assertThat(explain(query), containsString("lucene:test1(/oak:index/test1)"));
    assertFalse(root.getTree("/oak:index/test1").hasProperty(LuceneIndexConstants.PROP_REFRESH_DEFN));
    //However as reindex was not done query would result in empty set
    assertPlanAndQuery(query, "lucene:test1(/oak:index/test1)", Collections.<String>emptyList());
}
Also used : IndexDefinitionBuilder(org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder) Tree(org.apache.jackrabbit.oak.api.Tree) CoreMatchers.containsString(org.hamcrest.CoreMatchers.containsString) Test(org.junit.Test) AbstractQueryTest(org.apache.jackrabbit.oak.query.AbstractQueryTest)

Example 12 with IndexDefinitionBuilder

use of org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder in project jackrabbit-oak by apache.

the class IndexNodeTest method createNRTIndex.

private static NodeState createNRTIndex() {
    IndexDefinitionBuilder idx = new IndexDefinitionBuilder();
    idx.indexRule("nt:base").property("foo").propertyIndex();
    idx.async("async", "sync");
    return idx.build();
}
Also used : IndexDefinitionBuilder(org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder)

Example 13 with IndexDefinitionBuilder

use of org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder in project jackrabbit-oak by apache.

the class IndexCommandIT method createLuceneIndex.

private void createLuceneIndex(boolean asyncIndex) throws IOException, RepositoryException {
    IndexDefinitionBuilder idxBuilder = new IndexDefinitionBuilder();
    if (!asyncIndex) {
        idxBuilder.noAsync();
    }
    idxBuilder.indexRule("nt:base").property("foo").propertyIndex();
    Session session = fixture.getAdminSession();
    Node fooIndex = getOrCreateByPath("/oak:index/fooIndex", "oak:QueryIndexDefinition", session);
    idxBuilder.build(fooIndex);
    session.save();
    session.logout();
}
Also used : IndexDefinitionBuilder(org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder) NodeStateUtils.getNode(org.apache.jackrabbit.oak.spi.state.NodeStateUtils.getNode) Node(javax.jcr.Node) Session(javax.jcr.Session)

Example 14 with IndexDefinitionBuilder

use of org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder in project jackrabbit-oak by apache.

the class AggregateTest method propOneLevelNamedDirect.

@Test
public void propOneLevelNamedDirect() throws Exception {
    IndexDefinitionBuilder builder = new IndexDefinitionBuilder();
    builder.indexRule("nt:folder").property("jcr:content/a").ordered(PropertyType.TYPENAME_LONG).propertyIndex().property("jcr:content/b").ordered(PropertyType.TYPENAME_LONG).propertyIndex();
    IndexDefinition defn = new IndexDefinition(root, builder.build(), "/foo");
    Aggregate ag = defn.getApplicableIndexingRule("nt:folder").getAggregate();
    NodeBuilder nb = newNode("nt:folder");
    nb.child("jcr:content").setProperty("a", 1);
    nb.child("jcr:content").setProperty("b", 1);
    LuceneDocumentMaker maker = new LuceneDocumentMaker(defn, defn.getApplicableIndexingRule("nt:folder"), "/bar");
    Document doc = maker.makeDocument(nb.getNodeState());
    DefaultIndexWriterFactory writerFactory = new DefaultIndexWriterFactory(Mounts.defaultMountInfoProvider(), null, null);
    LuceneIndexWriter writer = writerFactory.newInstance(defn, EMPTY_NODE.builder(), false);
    writer.updateDocument("/bar", doc);
    writer.close(100);
}
Also used : LuceneIndexWriter(org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriter) IndexDefinitionBuilder(org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder) DefaultIndexWriterFactory(org.apache.jackrabbit.oak.plugins.index.lucene.writer.DefaultIndexWriterFactory) NodeBuilder(org.apache.jackrabbit.oak.spi.state.NodeBuilder) Document(org.apache.lucene.document.Document) Test(org.junit.Test)

Example 15 with IndexDefinitionBuilder

use of org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder in project jackrabbit-oak by apache.

the class HybridIndexClusterIT method prepareTestData.

@Override
protected void prepareTestData(Session s) throws RepositoryException {
    nswb1.register(JournalPropertyService.class, new LuceneJournalPropertyService(1000), null);
    nswb2.register(JournalPropertyService.class, new LuceneJournalPropertyService(1000), null);
    IndexDefinitionBuilder idx = new IndexDefinitionBuilder();
    idx.indexRule("nt:base").property("foo").propertyIndex();
    idx.async("async", "sync");
    Node idxNode = JcrUtils.getOrCreateByPath("/oak:index/fooIndex", "oak:QueryIndexDefinition", s);
    idx.build(idxNode);
    Node a = JcrUtils.getOrCreateByPath("/a", "oak:Unstructured", s);
    a.setProperty("foo", "x");
    s.save();
    runAsyncIndex(w1);
}
Also used : IndexDefinitionBuilder(org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder) Node(javax.jcr.Node)

Aggregations

IndexDefinitionBuilder (org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder)16 Tree (org.apache.jackrabbit.oak.api.Tree)9 Test (org.junit.Test)9 AbstractQueryTest (org.apache.jackrabbit.oak.query.AbstractQueryTest)7 CoreMatchers.containsString (org.hamcrest.CoreMatchers.containsString)7 NodeBuilder (org.apache.jackrabbit.oak.spi.state.NodeBuilder)3 Node (javax.jcr.Node)2 IndexInfo (org.apache.jackrabbit.oak.plugins.index.IndexInfo)2 TypeEditorProvider (org.apache.jackrabbit.oak.plugins.nodetype.TypeEditorProvider)2 Session (javax.jcr.Session)1 AsyncIndexInfo (org.apache.jackrabbit.oak.plugins.index.AsyncIndexInfo)1 AsyncIndexInfoService (org.apache.jackrabbit.oak.plugins.index.AsyncIndexInfoService)1 AsyncIndexInfoServiceImpl (org.apache.jackrabbit.oak.plugins.index.AsyncIndexInfoServiceImpl)1 IndexDefinition (org.apache.jackrabbit.oak.plugins.index.lucene.IndexDefinition)1 IndexRule (org.apache.jackrabbit.oak.plugins.index.lucene.util.IndexDefinitionBuilder.IndexRule)1 DefaultIndexWriterFactory (org.apache.jackrabbit.oak.plugins.index.lucene.writer.DefaultIndexWriterFactory)1 LuceneIndexWriter (org.apache.jackrabbit.oak.plugins.index.lucene.writer.LuceneIndexWriter)1 NodeStateUtils.getNode (org.apache.jackrabbit.oak.spi.state.NodeStateUtils.getNode)1 Document (org.apache.lucene.document.Document)1