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