You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@usergrid.apache.org by sf...@apache.org on 2014/09/24 17:58:12 UTC

git commit: adding type prefixing

Repository: incubator-usergrid
Updated Branches:
  refs/heads/two-dot-o-candidate-serialization e0f7b490a -> 2e4fc1559


adding type prefixing


Project: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/commit/2e4fc155
Tree: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/tree/2e4fc155
Diff: http://git-wip-us.apache.org/repos/asf/incubator-usergrid/diff/2e4fc155

Branch: refs/heads/two-dot-o-candidate-serialization
Commit: 2e4fc15598378bba7b2aa00e1510f7982939aa48
Parents: e0f7b49
Author: Shawn Feldman <sf...@apache.org>
Authored: Wed Sep 24 09:57:54 2014 -0600
Committer: Shawn Feldman <sf...@apache.org>
Committed: Wed Sep 24 09:57:54 2014 -0600

----------------------------------------------------------------------
 .../index/impl/EsEntityIndexImpl.java           | 47 ++++++++++++++------
 .../persistence/index/impl/EsQueryVistor.java   | 10 ++---
 .../index/impl/EntityIndexMapUtils.java         |  4 +-
 3 files changed, 38 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2e4fc155/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java
index 9c27c85..d309d60 100644
--- a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java
+++ b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsEntityIndexImpl.java
@@ -101,8 +101,8 @@ public class EsEntityIndexImpl implements EntityIndex {
     private final AtomicLong indexedCount = new AtomicLong(0L);
     private final AtomicDouble averageIndexTime = new AtomicDouble(0);
 
-    public static final String ANALYZED_SUFFIX = "_ug_analyzed";
-    public static final String GEO_SUFFIX = "_ug_geo";
+    public static final String ANALYZED_PREFIX = "ug_analyzed_s";
+    public static final String GEO_SUFFIX = "location";
 
 //    public static final String COLLECTION_SCOPE_FIELDNAME = "zzz__collectionscope__zzz";
     public static final String ENTITYID_FIELDNAME = "zzz_entityid_zzz";
@@ -476,19 +476,21 @@ public class EsEntityIndexImpl implements EntityIndex {
 
         Map<String, Object> entityMap = new HashMap<String, Object>();
 
+
+
         for (Object f : entity.getFields().toArray()) {
             Field field = (Field) f;
 
             if (f instanceof ListField)  {
                 List list = (List) field.getValue();
-                    entityMap.put(field.getName().toLowerCase(),
+                    entityMap.put(Types.LIST.PREFIX+field.getName().toLowerCase(),
                             new ArrayList(processCollectionForMap(list)));
 
                 if ( !list.isEmpty() ) {
                     if ( list.get(0) instanceof String ) {
                         Joiner joiner = Joiner.on(" ").skipNulls();
                         String joined = joiner.join(list);
-                        entityMap.put(field.getName().toLowerCase() + ANALYZED_SUFFIX,
+                        entityMap.put(Types.STRING.PREFIX+ ANALYZED_PREFIX +field.getName().toLowerCase(),
                             new ArrayList(processCollectionForMap(list)));
                         
                     }
@@ -496,23 +498,23 @@ public class EsEntityIndexImpl implements EntityIndex {
 
             } else if (f instanceof ArrayField) {
                 List list = (List) field.getValue();
-                entityMap.put(field.getName().toLowerCase(),
+                entityMap.put(Types.ARRAY.PREFIX+field.getName().toLowerCase(),
                         new ArrayList(processCollectionForMap(list)));
 
             } else if (f instanceof SetField) {
                 Set set = (Set) field.getValue();
-                entityMap.put(field.getName().toLowerCase(),
+                entityMap.put(Types.SET.PREFIX+field.getName().toLowerCase(),
                         new ArrayList(processCollectionForMap(set)));
 
             } else if (f instanceof EntityObjectField) {
                 EntityObject eo = (EntityObject)field.getValue();
-                entityMap.put(field.getName().toLowerCase(), entityToMap(eo)); // recursion
+                entityMap.put(Types.OBJECT.PREFIX+field.getName().toLowerCase(), entityToMap(eo)); // recursion
 
             } else if (f instanceof StringField) {
 
                 // index in lower case because Usergrid queries are case insensitive
-                entityMap.put(field.getName().toLowerCase(), ((String) field.getValue()).toLowerCase());
-                entityMap.put(field.getName().toLowerCase() + ANALYZED_SUFFIX, ((String) field.getValue()).toLowerCase());
+                entityMap.put(Types.STRING.PREFIX+field.getName().toLowerCase(), ((String) field.getValue()).toLowerCase());
+                entityMap.put(Types.STRING.PREFIX+ ANALYZED_PREFIX +field.getName().toLowerCase(), ((String) field.getValue()).toLowerCase());
 
             } else if (f instanceof LocationField) {
                 LocationField locField = (LocationField) f;
@@ -521,10 +523,10 @@ public class EsEntityIndexImpl implements EntityIndex {
                 // field names lat and lon trigger ElasticSearch geo location 
                 locMap.put("lat", locField.getValue().getLatitude());
                 locMap.put("lon", locField.getValue().getLongtitude());
-                entityMap.put(field.getName().toLowerCase() + GEO_SUFFIX, locMap);
+                entityMap.put(Types.LOCATION.PREFIX+field.getName().toLowerCase(), locMap);
 
             } else {
-                entityMap.put(field.getName().toLowerCase(), field.getValue());
+                entityMap.put(Types.PRIMITIVE.PREFIX+field.getName().toLowerCase(), field.getValue());
             }
         }
 
@@ -587,7 +589,7 @@ public class EsEntityIndexImpl implements EntityIndex {
                         // any string with field name that ends with _ug_analyzed gets analyzed
                         .startObject()
                             .startObject("template_1")
-                                .field("match", "*" + ANALYZED_SUFFIX)
+                                .field("match", Types.STRING.PREFIX + ANALYZED_PREFIX +"*")
                                 .field("match_mapping_type", "string")
                                 .startObject("mapping")
                                     .field("type", "string")
@@ -599,7 +601,7 @@ public class EsEntityIndexImpl implements EntityIndex {
                         // all other strings are not analyzed
                         .startObject()
                             .startObject("template_2")
-                                .field("match", "*")
+                                .field("match", Types.STRING.PREFIX + "*")
                                 .field("match_mapping_type", "string")
                                 .startObject("mapping")
                                     .field("type", "string")
@@ -611,7 +613,7 @@ public class EsEntityIndexImpl implements EntityIndex {
                         // fields location_ug_geo get geo-indexed
                         .startObject()
                             .startObject("template_3")
-                                .field("match", "location" + GEO_SUFFIX)
+                                .field("match", Types.LOCATION + "*")
                                 .startObject("mapping")
                                     .field("type", "geo_point")
                                 .endObject()
@@ -638,5 +640,22 @@ public class EsEntityIndexImpl implements EntityIndex {
         CandidateResults results = search( query );
         return results;
     }
+    public static enum Types{
+        STRING("s"),
+        LIST("l"),
+        LOCATION("loc"),
+        ARRAY("a"),
+        SET("set"),
+        OBJECT("o"),
+        PRIMITIVE("p");
+
+        public final String PREFIX;
+
+
+        Types(String prefix) {
+            this.PREFIX = prefix+"_";
+        }
+    }
+
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2e4fc155/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsQueryVistor.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsQueryVistor.java b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsQueryVistor.java
index 21e7b1a..84b8eeb 100644
--- a/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsQueryVistor.java
+++ b/stack/corepersistence/queryindex/src/main/java/org/apache/usergrid/persistence/index/impl/EsQueryVistor.java
@@ -149,16 +149,12 @@ public class EsQueryVistor implements QueryVisitor {
     public void visit( WithinOperand op ) {
 
         String name = op.getProperty().getValue();
-        name = name.toLowerCase();
+        name = EsEntityIndexImpl.Types.LOCATION.PREFIX+ name.toLowerCase()  ;
 
         float lat = op.getLatitude().getFloatValue();
         float lon = op.getLongitude().getFloatValue();
         float distance = op.getDistance().getFloatValue();
 
-        if ( !name.endsWith( EsEntityIndexImpl.GEO_SUFFIX )) {
-            name += EsEntityIndexImpl.GEO_SUFFIX;
-        }
-
         FilterBuilder fb = FilterBuilders.geoDistanceFilter( name )
            .lat( lat ).lon( lon ).distance( distance, DistanceUnit.METERS );
         filterBuilders.add( fb );
@@ -231,10 +227,10 @@ public class EsQueryVistor implements QueryVisitor {
     }
 
     private String addAnayzedSuffix( String name ) {
-        if ( name.endsWith(EsEntityIndexImpl.ANALYZED_SUFFIX) ) {
+        if ( name.endsWith(EsEntityIndexImpl.ANALYZED_PREFIX) ) {
             return name;
         } 
-        return name + EsEntityIndexImpl.ANALYZED_SUFFIX;
+        return name + EsEntityIndexImpl.ANALYZED_PREFIX;
     } 
 
     @Override

http://git-wip-us.apache.org/repos/asf/incubator-usergrid/blob/2e4fc155/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityIndexMapUtils.java
----------------------------------------------------------------------
diff --git a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityIndexMapUtils.java b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityIndexMapUtils.java
index 261809c..4f5ab88 100644
--- a/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityIndexMapUtils.java
+++ b/stack/corepersistence/queryindex/src/test/java/org/apache/usergrid/persistence/index/impl/EntityIndexMapUtils.java
@@ -51,7 +51,7 @@ import org.apache.usergrid.persistence.model.field.value.Location;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
 
-import static org.apache.usergrid.persistence.index.impl.EsEntityIndexImpl.ANALYZED_SUFFIX;
+import static org.apache.usergrid.persistence.index.impl.EsEntityIndexImpl.ANALYZED_PREFIX;
 import static org.apache.usergrid.persistence.index.impl.EsEntityIndexImpl.GEO_SUFFIX;
 
 
@@ -241,7 +241,7 @@ class EntityIndexMapUtils {
 
             } else if (f instanceof StringField) {
                 entityMap.put(field.getName(), ((String) field.getValue()).toLowerCase());
-                entityMap.put(field.getName() + ANALYZED_SUFFIX, field.getValue());
+                entityMap.put(field.getName() + ANALYZED_PREFIX, field.getValue());
 
             } else if (f instanceof LocationField) {
                 LocationField locField = (LocationField) f;