Author: tommaso
Date: Fri Feb 26 09:19:08 2016
New Revision: 1732435

URL: http://svn.apache.org/viewvc?rev=1732435&view=rev
Log:
OAK-4067 - avoid building suggester with existing directory when no content is 
indexed

Modified:
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/SuggestHelper.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexSuggestionTest.java
    
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java

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=1732435&r1=1732434&r2=1732435&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
 Fri Feb 26 09:19:08 2016
@@ -66,8 +66,10 @@ public class SuggestHelper {
             tempDir = Files.createTempDir();
             File tempSubChild = new File(tempDir, "non-existing-sub-child");
 
-            Dictionary dictionary = new LuceneDictionary(reader, 
FieldNames.SUGGEST);
-            getLookup(directory, analyzer, tempSubChild).build(dictionary);
+            if (reader.getDocCount(FieldNames.SUGGEST) > 0) {
+                Dictionary dictionary = new LuceneDictionary(reader, 
FieldNames.SUGGEST);
+                getLookup(directory, analyzer, tempSubChild).build(dictionary);
+            }
         } catch (RuntimeException e) {
             log.debug("could not update the suggester", e);
         } finally {

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexSuggestionTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexSuggestionTest.java?rev=1732435&r1=1732434&r2=1732435&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexSuggestionTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexSuggestionTest.java
 Fri Feb 26 09:19:08 2016
@@ -16,6 +16,17 @@
  */
 package org.apache.jackrabbit.oak.plugins.index.lucene;
 
+import javax.jcr.Node;
+import javax.jcr.Repository;
+import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
+import javax.jcr.query.Query;
+import javax.jcr.query.QueryManager;
+import javax.jcr.query.QueryResult;
+import javax.jcr.query.Row;
+import javax.jcr.query.RowIterator;
+import javax.jcr.security.Privilege;
+
 import org.apache.jackrabbit.JcrConstants;
 import org.apache.jackrabbit.api.JackrabbitSession;
 import 
org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
@@ -28,26 +39,10 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
-import javax.jcr.Node;
-import javax.jcr.Repository;
-import javax.jcr.Session;
-import javax.jcr.SimpleCredentials;
-import javax.jcr.query.Query;
-import javax.jcr.query.QueryManager;
-import javax.jcr.query.QueryResult;
-import javax.jcr.query.Row;
-import javax.jcr.query.RowIterator;
-import javax.jcr.security.Privilege;
-
-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.IndexConstants.*;
 import static 
org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.INDEX_RULES;
 import static org.apache.jackrabbit.oak.plugins.index.lucene.TestUtil.shutdown;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.Assert.*;
 
 @SuppressWarnings("ConstantConditions")
 public class LuceneIndexSuggestionTest {
@@ -70,7 +65,7 @@ public class LuceneIndexSuggestionTest {
                 .with(new LuceneIndexEditorProvider());
 
         repository = jcr.createRepository();
-        session = (JackrabbitSession)repository.login(new 
SimpleCredentials("admin", "admin".toCharArray()));
+        session = (JackrabbitSession) repository.login(new 
SimpleCredentials("admin", "admin".toCharArray()));
         root = session.getRootNode();
     }
 
@@ -139,12 +134,17 @@ public class LuceneIndexSuggestionTest {
         createSuggestIndex("lucene-suggest", indexNodeType, indexPropName, 
addFullText, suggestAnalyzed);
 
         Node indexedNode = root.addNode("indexedNode1", queryNodeType);
-        indexedNode.setProperty(indexPropName, indexPropValue + " 1");
-        indexedNode = root.addNode("indexedNode2", queryNodeType);
-        indexedNode.setProperty(indexPropName, indexPropValue + " 2");
+
+        if (indexPropValue != null) {
+            indexedNode.setProperty(indexPropName, indexPropValue + " 1");
+            indexedNode = root.addNode("indexedNode2", queryNodeType);
+            indexedNode.setProperty(indexPropName, indexPropValue + " 2");
+        }
+
         if (useUserSession) {
             session.getUserManager().createUser(TEST_USER_NAME, 
TEST_USER_NAME);
         }
+
         session.save();
 
         Session userSession = session;
@@ -306,4 +306,18 @@ public class LuceneIndexSuggestionTest {
                 true, true,
                 suggestQueryText, true, false);
     }
+
+    //OAK-4067
+    @Test
+    public void emptySuggestWithNothingIndexed() throws Exception {
+        final String nodeType = "nt:unstructured";
+        final String indexPropName = "description";
+        final String indexPropValue = null;
+        final String suggestQueryText = null;
+
+        checkSuggestions(nodeType,
+                indexPropName, indexPropValue,
+                true, true,
+                suggestQueryText, false, false);
+    }
 }

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java?rev=1732435&r1=1732434&r2=1732435&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LucenePropertyIndexTest.java
 Fri Feb 26 09:19:08 2016
@@ -2074,18 +2074,18 @@ public class LucenePropertyIndexTest ext
 
     }
 
-    @Ignore("OAK-4067")
     @Test
     public void emptySuggestDictionary() throws Exception{
         Tree idx = createIndex("test1", of("propa", "propb"));
         Tree props = TestUtil.newRulePropTree(idx, "nt:base");
         Tree prop1 = props.addChild(TestUtil.unique("prop"));
+        prop1.setProperty(LuceneIndexConstants.PROP_PROPERTY_INDEX, true);
         prop1.setProperty(LuceneIndexConstants.PROP_NAME, "tag");
         prop1.setProperty(LuceneIndexConstants.PROP_INDEX, true);
         prop1.setProperty(LuceneIndexConstants.PROP_USE_IN_SUGGEST, true);
         root.commit();
 
-        String query = "select * from [nt:base] where tag='foo'";
+        String query = "select * from [nt:base] where [tag] = 'foo'";
         assertPlanAndQuery(query, "lucene:test1(/oak:index/test1)", 
Collections.<String>emptyList());
     }
 


Reply via email to