Author: catholicon
Date: Tue Dec 15 22:27:23 2015
New Revision: 1720259

URL: http://svn.apache.org/viewvc?rev=1720259&view=rev
Log:
OAK-3789: Index definition for properties should allow "not creating any 
fields" for that property

Modified:
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexConstants.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java
    
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/PropertyDefinition.java

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=1720259&r1=1720258&r2=1720259&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
 Tue Dec 15 22:27:23 2015
@@ -139,6 +139,8 @@ public interface LuceneIndexConstants {
 
     String PROP_ORDERED = "ordered";
 
+    String PROP_SKIP_DEFAULT_INDEXING = "skipDefaultIndexing";
+
     String PROP_SCORER_PROVIDER = "scorerProviderName";
 
     /**

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java?rev=1720259&r1=1720258&r2=1720259&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/LuceneIndexEditor.java
 Tue Dec 15 22:27:23 2015
@@ -484,41 +484,43 @@ public class LuceneIndexEditor implement
                                   String pname,
                                   PropertyDefinition pd) {
         boolean includeTypeForFullText = 
indexingRule.includePropertyType(property.getType().tag());
-        if (Type.BINARY.tag() == property.getType().tag()
-                && includeTypeForFullText) {
-            fields.addAll(newBinary(property, state, null, path + "@" + 
pname));
-            return true;
-        }  else {
-            boolean dirty = false;
 
-            if (pd.propertyIndex && 
pd.includePropertyType(property.getType().tag())){
-                dirty |= addTypedFields(fields, property, pname);
-            }
-
-            if (pd.fulltextEnabled() && includeTypeForFullText) {
-                for (String value : property.getValue(Type.STRINGS)) {
-                    if (pd.analyzed && 
pd.includePropertyType(property.getType().tag())) {
-                        String analyzedPropName = 
constructAnalyzedPropertyName(pname);
-                        fields.add(newPropertyField(analyzedPropName, value, 
!pd.skipTokenization(pname), pd.stored));
-                    }
-
-                    if (pd.useInSuggest) {
-                        fields.add(FieldFactory.newSuggestField(value));
-                    }
-
-                    if (pd.useInSpellcheck) {
-                        fields.add(newPropertyField(FieldNames.SPELLCHECK, 
value, true, false));
-                    }
+        boolean dirty = false;
+        if (!pd.skipDefaultIndexing) {
+            if (Type.BINARY.tag() == property.getType().tag()
+                    && includeTypeForFullText) {
+                fields.addAll(newBinary(property, state, null, path + "@" + 
pname));
+                dirty = true;
+            } else {
+                if (pd.propertyIndex && 
pd.includePropertyType(property.getType().tag())) {
+                    dirty |= addTypedFields(fields, property, pname);
+                }
 
-                    if (pd.nodeScopeIndex) {
-                        Field field = newFulltextField(value);
-                        fields.add(field);
+                if (pd.fulltextEnabled() && includeTypeForFullText) {
+                    for (String value : property.getValue(Type.STRINGS)) {
+                        if (pd.analyzed && 
pd.includePropertyType(property.getType().tag())) {
+                            String analyzedPropName = 
constructAnalyzedPropertyName(pname);
+                            fields.add(newPropertyField(analyzedPropName, 
value, !pd.skipTokenization(pname), pd.stored));
+                        }
+
+                        if (pd.useInSuggest) {
+                            fields.add(FieldFactory.newSuggestField(value));
+                        }
+
+                        if (pd.useInSpellcheck) {
+                            fields.add(newPropertyField(FieldNames.SPELLCHECK, 
value, true, false));
+                        }
+
+                        if (pd.nodeScopeIndex) {
+                            Field field = newFulltextField(value);
+                            fields.add(field);
+                        }
+                        dirty = true;
                     }
-                    dirty = true;
                 }
             }
-            return dirty;
         }
+        return dirty;
     }
 
     private String constructAnalyzedPropertyName(String pname) {

Modified: 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/PropertyDefinition.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/PropertyDefinition.java?rev=1720259&r1=1720258&r2=1720259&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/PropertyDefinition.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/PropertyDefinition.java
 Tue Dec 15 22:27:23 2015
@@ -64,6 +64,8 @@ class PropertyDefinition {
 
     final boolean index;
 
+    final boolean skipDefaultIndexing;
+
     final boolean stored;
 
     final boolean nodeScopeIndex;
@@ -105,6 +107,7 @@ class PropertyDefinition {
 
         //By default if a property is defined it is indexed
         this.index = getOptionalValue(defn, LuceneIndexConstants.PROP_INDEX, 
true);
+        this.skipDefaultIndexing = getOptionalValue(defn, 
LuceneIndexConstants.PROP_SKIP_DEFAULT_INDEXING, false);
         this.stored = getOptionalValueIfIndexed(defn, 
LuceneIndexConstants.PROP_USE_IN_EXCERPT, false);
         this.nodeScopeIndex = getOptionalValueIfIndexed(defn, 
LuceneIndexConstants.PROP_NODE_SCOPE_INDEX, false);
 


Reply via email to