Author: catholicon
Date: Fri Jan 22 15:37:08 2016
New Revision: 1726237
URL: http://svn.apache.org/viewvc?rev=1726237&view=rev
Log:
OAK-2477: Move suggester specific config to own configuration node
Suggestion configuration to be read from <indexDef>/suggestion. Although, for
backward compatibility, setting those properties on <indexDef> would continue
to work.
Added index config tests for these. Also, adjusted existing text using these
config to use the new location.
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/LuceneOakRepositoryStub.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/SuggestTest.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexSuggestionTest.java
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java?rev=1726237&r1=1726236&r2=1726237&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinition.java
Fri Jan 22 15:37:08 2016
@@ -270,13 +270,13 @@ class IndexDefinition implements Aggrega
this.analyzer = createAnalyzer();
this.hasCustomTikaConfig = getTikaConfigNode().exists();
this.maxExtractLength = determineMaxExtractLength();
- this.suggesterUpdateFrequencyMinutes = getOptionalValue(defn,
LuceneIndexConstants.SUGGEST_UPDATE_FREQUENCY_MINUTES, 60);
+ this.suggesterUpdateFrequencyMinutes =
evaluateSuggesterUpdateFrequencyMinutes(defn, 60);
this.scorerProviderName = getOptionalValue(defn,
LuceneIndexConstants.PROP_SCORER_PROVIDER, null);
this.reindexCount = determineReindexCount(defn, defnb);
this.pathFilter = PathFilter.from(new ReadOnlyBuilder(defn));
this.queryPaths = getQueryPaths(defn);
this.saveDirListing = getOptionalValue(defn,
LuceneIndexConstants.SAVE_DIR_LISTING, true);
- this.suggestAnalyzed = getOptionalValue(defn,
LuceneIndexConstants.SUGGEST_ANALYZED, false);
+ this.suggestAnalyzed = evaluateSuggestAnalyzed(defn, false);
this.secureFacets = defn.hasChildNode(FACETS) &&
getOptionalValue(defn.getChildNode(FACETS), PROP_SECURE_FACETS, true);
this.suggestEnabled = evaluateSuggestionEnabled();
this.spellcheckEnabled = evaluateSpellcheckEnabled();
@@ -318,6 +318,17 @@ class IndexDefinition implements Aggrega
return entryCount;
}
+ private int evaluateSuggesterUpdateFrequencyMinutes(NodeState defn, int
defaultValue) {
+ NodeState suggestionConfig =
defn.getChildNode(LuceneIndexConstants.SUGGESTION_CONFIG);
+
+ if (!suggestionConfig.exists()) {
+ //handle backward compatibility
+ return getOptionalValue(defn,
LuceneIndexConstants.SUGGEST_UPDATE_FREQUENCY_MINUTES, defaultValue);
+ }
+
+ return getOptionalValue(suggestionConfig,
LuceneIndexConstants.SUGGEST_UPDATE_FREQUENCY_MINUTES, defaultValue);
+ }
+
public int getSuggesterUpdateFrequencyMinutes() {
return suggesterUpdateFrequencyMinutes;
}
@@ -646,6 +657,17 @@ class IndexDefinition implements Aggrega
return definition.getString(LuceneIndexConstants.INDEX_PATH);
}
+ private boolean evaluateSuggestAnalyzed(NodeState defn, boolean
defaultValue) {
+ NodeState suggestionConfig =
defn.getChildNode(LuceneIndexConstants.SUGGESTION_CONFIG);
+
+ if (!suggestionConfig.exists()) {
+ //handle backward compatibility
+ return getOptionalValue(defn,
LuceneIndexConstants.SUGGEST_ANALYZED, defaultValue);
+ }
+
+ return getOptionalValue(suggestionConfig,
LuceneIndexConstants.SUGGEST_ANALYZED, defaultValue);
+ }
+
public boolean isSuggestAnalyzed() {
return suggestAnalyzed;
}
Modified:
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java?rev=1726237&r1=1726236&r2=1726237&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java
Fri Jan 22 15:37:08 2016
@@ -244,6 +244,11 @@ public interface LuceneIndexConstants {
String PROP_USE_IN_SUGGEST = "useInSuggest";
/**
+ * subnode holding configuration for suggestions
+ */
+ String SUGGESTION_CONFIG = "suggestion";
+
+ /**
* update frequency of the suggester in minutes
*/
String SUGGEST_UPDATE_FREQUENCY_MINUTES = "suggestUpdateFrequencyMinutes";
Modified:
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/LuceneOakRepositoryStub.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/LuceneOakRepositoryStub.java?rev=1726237&r1=1726236&r2=1726237&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/LuceneOakRepositoryStub.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/LuceneOakRepositoryStub.java
Fri Jan 22 15:37:08 2016
@@ -85,7 +85,9 @@ public class LuceneOakRepositoryStub ext
.setProperty(TYPE_PROPERTY_NAME, TYPE_LUCENE)
.setProperty(REINDEX_PROPERTY_NAME, true)
.setProperty(LuceneIndexConstants.TEST_MODE, true)
-
.setProperty(LuceneIndexConstants.EVALUATE_PATH_RESTRICTION, true)
+
.setProperty(LuceneIndexConstants.EVALUATE_PATH_RESTRICTION, true);
+ index.child(LuceneIndexConstants.SUGGESTION_CONFIG)
+ .setProperty(JCR_PRIMARYTYPE, "nt:unstructured", NAME)
.setProperty(LuceneIndexConstants.SUGGEST_UPDATE_FREQUENCY_MINUTES, 10);
NodeBuilder rules =
index.child(LuceneIndexConstants.INDEX_RULES);
Modified:
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/SuggestTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/SuggestTest.java?rev=1726237&r1=1726236&r2=1726237&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/SuggestTest.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/jcr/query/SuggestTest.java
Fri Jan 22 15:37:08 2016
@@ -33,6 +33,9 @@ import org.apache.jackrabbit.core.query.
import org.junit.After;
import org.junit.Before;
+import static
org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.SUGGESTION_CONFIG;
+import static
org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.SUGGEST_UPDATE_FREQUENCY_MINUTES;
+
/**
* Tests the suggest support.
*/
@@ -43,13 +46,15 @@ public class SuggestTest extends Abstrac
super.setUp();
// change suggester update frequency
-
superuser.getNode("/oak:index/luceneGlobal").setProperty("suggestUpdateFrequencyMinutes",
0);
+ superuser.getNode("/oak:index/luceneGlobal/" + SUGGESTION_CONFIG)
+ .setProperty(SUGGEST_UPDATE_FREQUENCY_MINUTES, 0);
}
@After
public void tearDown() throws Exception {
// reset suggester update frequency
-
superuser.getNode("/oak:index/luceneGlobal").setProperty("suggestUpdateFrequencyMinutes",
10);
+ superuser.getNode("/oak:index/luceneGlobal/" + SUGGESTION_CONFIG)
+ .setProperty(SUGGEST_UPDATE_FREQUENCY_MINUTES, 10);
super.tearDown();
}
Modified:
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java?rev=1726237&r1=1726236&r2=1726237&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java
(original)
+++
jackrabbit/oak/trunk/oak-lucene/src/test/java/org/apache/jackrabbit/oak/plugins/index/lucene/IndexDefinitionTest.java
Fri Jan 22 15:37:08 2016
@@ -621,6 +621,64 @@ public class IndexDefinitionTest {
assertTrue(!idxDefn.getApplicableIndexingRule(TestUtil.NT_TEST).getNotNullCheckEnabledProperties().isEmpty());
}
+ //OAK-2477
+ @Test
+ public void testSuggestFrequency() throws Exception {
+ int suggestFreq = 40;
+ //default config
+ NodeBuilder indexRoot = builder;
+ IndexDefinition idxDefn = new IndexDefinition(root,
indexRoot.getNodeState());
+ assertEquals("Default config", 60,
idxDefn.getSuggesterUpdateFrequencyMinutes());
+
+ //namespaced config shadows old method
+ indexRoot = builder.child("shadowConfigRoot");
+
indexRoot.setProperty(LuceneIndexConstants.SUGGEST_UPDATE_FREQUENCY_MINUTES,
suggestFreq);
+ indexRoot.child(LuceneIndexConstants.SUGGESTION_CONFIG);
+ idxDefn = new IndexDefinition(root, indexRoot.getNodeState());
+ assertEquals("Namespaced config node should shadow global config",
+ 60, idxDefn.getSuggesterUpdateFrequencyMinutes());
+
+ //config for backward config
+ indexRoot = builder.child("backwardCompatibilityRoot");
+
indexRoot.setProperty(LuceneIndexConstants.SUGGEST_UPDATE_FREQUENCY_MINUTES,
suggestFreq);
+ idxDefn = new IndexDefinition(root, indexRoot.getNodeState());
+ assertEquals("Backward compatibility config", suggestFreq,
idxDefn.getSuggesterUpdateFrequencyMinutes());
+
+ indexRoot = builder.child("indexRoot");
+ indexRoot.child(LuceneIndexConstants.SUGGESTION_CONFIG)
+
.setProperty(LuceneIndexConstants.SUGGEST_UPDATE_FREQUENCY_MINUTES,
suggestFreq);
+ idxDefn = new IndexDefinition(root, indexRoot.getNodeState());
+ assertEquals("Set config", suggestFreq,
idxDefn.getSuggesterUpdateFrequencyMinutes());
+ }
+
+ //OAK-2477
+ @Test
+ public void testSuggestAnalyzed() throws Exception {
+ //default config
+ NodeBuilder indexRoot = builder;
+ IndexDefinition idxDefn = new IndexDefinition(root,
indexRoot.getNodeState());
+ assertFalse("Default config", idxDefn.isSuggestAnalyzed());
+
+ //namespaced config shadows old method
+ indexRoot = builder.child("shadowConfigRoot");
+ indexRoot.setProperty(LuceneIndexConstants.SUGGEST_ANALYZED, true);
+ indexRoot.child(LuceneIndexConstants.SUGGESTION_CONFIG);
+ idxDefn = new IndexDefinition(root, indexRoot.getNodeState());
+ assertFalse("Namespaced config node should shadow global config",
idxDefn.isSuggestAnalyzed());
+
+ //config for backward config
+ indexRoot = builder.child("backwardCompatibilityRoot");
+ indexRoot.setProperty(LuceneIndexConstants.SUGGEST_ANALYZED, true);
+ idxDefn = new IndexDefinition(root, indexRoot.getNodeState());
+ assertTrue("Backward compatibility config",
idxDefn.isSuggestAnalyzed());
+
+ indexRoot = builder.child("indexRoot");
+ indexRoot.child(LuceneIndexConstants.SUGGESTION_CONFIG)
+ .setProperty(LuceneIndexConstants.SUGGEST_ANALYZED, true);
+ idxDefn = new IndexDefinition(root, indexRoot.getNodeState());
+ assertTrue("Set config", idxDefn.isSuggestAnalyzed());
+ }
+
@Test
public void testSuggestEnabledOnNamedProp() throws Exception {
NodeBuilder rules = builder.child(INDEX_RULES);
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=1726237&r1=1726236&r2=1726237&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 Jan 22 15:37:08 2016
@@ -85,7 +85,7 @@ public class LuceneIndexSuggestionTest {
def.setProperty("name", name);
def.setProperty(LuceneIndexConstants.COMPAT_MODE,
IndexFormatVersion.V2.getVersion());
if (suggestAnalyzed) {
- def.setProperty("suggestAnalyzed", suggestAnalyzed);
+
def.addNode(LuceneIndexConstants.SUGGESTION_CONFIG).setProperty("suggestAnalyzed",
suggestAnalyzed);
}