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());
}