You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by ch...@apache.org on 2014/11/12 14:13:38 UTC

svn commit: r1638780 - in /jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene: LuceneIndexEditor.java PropertyDefinition.java util/ConfigUtil.java

Author: chetanm
Date: Wed Nov 12 13:13:38 2014
New Revision: 1638780

URL: http://svn.apache.org/r1638780
Log:
OAK-2261 - Enable support for NodeType based indexing rules

Refactor the boost logic. Boost would always be set. Default to 1.0f unless configured explicitly

Modified:
    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
    jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/ConfigUtil.java

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=1638780&r1=1638779&r2=1638780&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 Wed Nov 12 13:13:38 2014
@@ -339,10 +339,8 @@ public class LuceneIndexEditor implement
                         context.isStored(pname)));
                 if (context.isFullTextEnabled()) {
                     Field field = newFulltextField(value);
-                    boolean hasBoost = context.getDefinition().getPropDefn(pname) != null &&
-                            context.getDefinition().getPropDefn(pname).hasFieldBoost();
-                    if (hasBoost) {
-                        field.setBoost((float)context.getDefinition().getPropDefn(pname).fieldBoost());
+                    if (context.getDefinition().hasPropertyDefinition(pname)) {
+                        field.setBoost(context.getDefinition().getPropDefn(pname).boost);
                     }
                     fields.add(field);
                 }

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=1638780&r1=1638779&r2=1638780&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 Wed Nov 12 13:13:38 2014
@@ -21,48 +21,50 @@ package org.apache.jackrabbit.oak.plugin
 
 import javax.jcr.PropertyType;
 
-import org.apache.jackrabbit.oak.api.Type;
 import org.apache.jackrabbit.oak.spi.state.NodeState;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.apache.jackrabbit.oak.plugins.index.lucene.LuceneIndexConstants.FIELD_BOOST;
+import static org.apache.jackrabbit.oak.plugins.index.lucene.util.ConfigUtil.getOptionalValue;
+
 class PropertyDefinition {
     private static final Logger log = LoggerFactory.getLogger(PropertyDefinition.class);
+    /**
+     * The default boost: 1.0f.
+     */
+    private static final float DEFAULT_BOOST = 1.0f;
+
     private final String name;
     private final NodeState definition;
 
-    private final int propertyType;
-    private double fieldBoost;
-    private boolean hasFieldBoost;
+    final int propertyType;
+    /**
+     * The boost value for a property.
+     */
+    final float boost;
 
     public PropertyDefinition(IndexDefinition idxDefn, String name, NodeState defn) {
         this.name = name;
         this.definition = defn;
-
-        int type = PropertyType.UNDEFINED;
-        if(defn.hasProperty(LuceneIndexConstants.PROP_TYPE)){
-            String typeName  = defn.getString(LuceneIndexConstants.PROP_TYPE);
-            try{
-                type = PropertyType.valueFromName(typeName);
-            } catch (IllegalArgumentException e){
-                log.warn("Invalid property type {} for property {} in Index {}", typeName, name, idxDefn);
-            }
-        }
-        this.propertyType = type;
-        this.hasFieldBoost = defn.hasProperty(LuceneIndexConstants.FIELD_BOOST) && (defn.getProperty(LuceneIndexConstants.FIELD_BOOST).getType().tag() == Type.DOUBLE.tag());
-        // if !hasFieldBoost then setting default lucene field boost = 1.0
-        fieldBoost = hasFieldBoost ? defn.getProperty(LuceneIndexConstants.FIELD_BOOST).getValue(Type.DOUBLE) : 1.0;
+        this.boost = getOptionalValue(defn, FIELD_BOOST, DEFAULT_BOOST);
+        this.propertyType = getPropertyType(idxDefn, name, defn);
     }
 
     public int getPropertyType() {
         return propertyType;
     }
 
-    public boolean hasFieldBoost() {
-        return hasFieldBoost;
-    }
-
-    public double fieldBoost() {
-        return fieldBoost;
+    private static int getPropertyType(IndexDefinition idxDefn, String name, NodeState defn) {
+        int type = PropertyType.UNDEFINED;
+        if (defn.hasProperty(LuceneIndexConstants.PROP_TYPE)) {
+            String typeName = defn.getString(LuceneIndexConstants.PROP_TYPE);
+            try {
+                type = PropertyType.valueFromName(typeName);
+            } catch (IllegalArgumentException e) {
+                log.warn("Invalid property type {} for property {} in Index {}", typeName, name, idxDefn);
+            }
+        }
+        return type;
     }
 }

Modified: jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/ConfigUtil.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/ConfigUtil.java?rev=1638780&r1=1638779&r2=1638780&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/ConfigUtil.java (original)
+++ jackrabbit/oak/trunk/oak-lucene/src/main/java/org/apache/jackrabbit/oak/plugins/index/lucene/util/ConfigUtil.java Wed Nov 12 13:13:38 2014
@@ -40,4 +40,9 @@ public class ConfigUtil {
         PropertyState ps = definition.getProperty(propName);
         return ps == null ? defaultVal : ps.getValue(Type.STRING);
     }
+
+    public static float getOptionalValue(NodeState definition, String propName, float defaultVal){
+        PropertyState ps = definition.getProperty(propName);
+        return ps == null ? defaultVal : ps.getValue(Type.DOUBLE).floatValue();
+    }
 }