This is an automated email from the ASF dual-hosted git repository.

nixon pushed a commit to branch branch-0.8
in repository https://gitbox.apache.org/repos/asf/atlas.git


The following commit(s) were added to refs/heads/branch-0.8 by this push:
     new 63e3d5c  ATLAS-3816: Backport: Basic search issue with IndexSerializer
63e3d5c is described below

commit 63e3d5c9e5e74f1110d80c7bcfce970725504888
Author: Nikhil Bonte <[email protected]>
AuthorDate: Thu May 28 21:29:20 2020 +0530

    ATLAS-3816: Backport: Basic search issue with IndexSerializer
    
    Signed-off-by: nixonrodrigues <[email protected]>
---
 .../org/apache/atlas/repository/Constants.java     |  2 ++
 .../repository/graphdb/titan0/Titan0Graph.java     | 34 +++++++++++++++++-
 .../repository/graphdb/titan1/Titan1Graph.java     | 34 +++++++++++++++++-
 .../atlas/discovery/EntityDiscoveryService.java    |  7 ++--
 .../atlas/discovery/FullTextSearchProcessor.java   |  2 +-
 .../apache/atlas/discovery/SearchProcessor.java    | 41 +++++++++++-----------
 .../graph/GraphBackedDiscoveryService.java         |  4 ++-
 .../store/graph/v1/AtlasGraphUtilsV1.java          | 21 +++++++----
 .../repository/graph/GraphRepoMapperScaleTest.java |  5 ++-
 9 files changed, 117 insertions(+), 33 deletions(-)

diff --git a/common/src/main/java/org/apache/atlas/repository/Constants.java 
b/common/src/main/java/org/apache/atlas/repository/Constants.java
index 4fa6dad..2ab4c03 100644
--- a/common/src/main/java/org/apache/atlas/repository/Constants.java
+++ b/common/src/main/java/org/apache/atlas/repository/Constants.java
@@ -94,6 +94,8 @@ public final class Constants {
     public static final String INDEX_SEARCH_MAX_RESULT_SET_SIZE = 
"atlas.graph.index.search.max-result-set-size";
     public static final String INDEX_SEARCH_TYPES_MAX_QUERY_STR_LENGTH = 
"atlas.graph.index.search.types.max-query-str-length";
     public static final String INDEX_SEARCH_TAGS_MAX_QUERY_STR_LENGTH  = 
"atlas.graph.index.search.tags.max-query-str-length";
+    public static final String INDEX_SEARCH_VERTEX_PREFIX_PROPERTY  = 
"atlas.graph.index.search.vertex.prefix";
+    public static final String INDEX_SEARCH_VERTEX_PREFIX_DEFAULT = "$v$";
 
     public static final String MAX_FULLTEXT_QUERY_STR_LENGTH  = 
"atlas.graph.fulltext-max-query-str-length";
     public static final String MAX_DSL_QUERY_STR_LENGTH  = 
"atlas.graph.dsl-max-query-str-length";
diff --git 
a/graphdb/titan0/src/main/java/org/apache/atlas/repository/graphdb/titan0/Titan0Graph.java
 
b/graphdb/titan0/src/main/java/org/apache/atlas/repository/graphdb/titan0/Titan0Graph.java
index 2408287..2b5eec8 100644
--- 
a/graphdb/titan0/src/main/java/org/apache/atlas/repository/graphdb/titan0/Titan0Graph.java
+++ 
b/graphdb/titan0/src/main/java/org/apache/atlas/repository/graphdb/titan0/Titan0Graph.java
@@ -27,6 +27,8 @@ import com.thinkaurelius.titan.core.TitanGraph;
 import com.thinkaurelius.titan.core.TitanIndexQuery;
 import com.thinkaurelius.titan.core.schema.TitanManagement;
 import com.thinkaurelius.titan.core.util.TitanCleanup;
+import org.apache.atlas.ApplicationProperties;
+import org.apache.atlas.AtlasException;
 import com.tinkerpop.blueprints.Edge;
 import com.tinkerpop.blueprints.Element;
 import com.tinkerpop.blueprints.Vertex;
@@ -46,6 +48,7 @@ import org.apache.atlas.repository.graphdb.GremlinVersion;
 import org.apache.atlas.repository.graphdb.titan0.query.Titan0GraphQuery;
 import org.apache.atlas.repository.graphdb.utils.IteratorToIterableAdapter;
 import org.apache.atlas.typesystem.types.IDataType;
+import org.apache.commons.configuration.Configuration;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -66,6 +69,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import static 
org.apache.atlas.repository.Constants.INDEX_SEARCH_VERTEX_PREFIX_DEFAULT;
+import static 
org.apache.atlas.repository.Constants.INDEX_SEARCH_VERTEX_PREFIX_PROPERTY;
+
 
 /**
  * Titan 0.5.4 implementation of AtlasGraph.
@@ -74,6 +80,7 @@ public class Titan0Graph implements AtlasGraph<Titan0Vertex, 
Titan0Edge> {
     private static final Logger LOG = 
LoggerFactory.getLogger(Titan0Graph.class);
 
     private final Set<String> multiProperties;
+    private static Configuration APPLICATION_PROPERTIES = null;
 
     public Titan0Graph() {
         //determine multi-properties once at startup
@@ -166,7 +173,8 @@ public class Titan0Graph implements 
AtlasGraph<Titan0Vertex, Titan0Edge> {
 
     @Override
     public AtlasIndexQuery<Titan0Vertex, Titan0Edge> indexQuery(String 
fulltextIndex, String graphQuery, int offset) {
-        TitanIndexQuery query = getGraph().indexQuery(fulltextIndex, 
graphQuery).offset(offset);
+        String prefix = getIndexQueryPrefix();
+        TitanIndexQuery query = getGraph().indexQuery(fulltextIndex, 
graphQuery).setElementIdentifier(prefix).offset(offset);
         return new Titan0IndexQuery(this, query);
     }
 
@@ -417,4 +425,28 @@ public class Titan0Graph implements 
AtlasGraph<Titan0Vertex, Titan0Edge> {
     public void addMultiProperties(Set<String> names) {
         multiProperties.addAll(names);
     }
+
+    public String getIndexQueryPrefix() {
+        String ret;
+
+        initApplicationProperties();
+
+        if (APPLICATION_PROPERTIES == null) {
+            ret = INDEX_SEARCH_VERTEX_PREFIX_DEFAULT;
+        } else {
+            ret = 
APPLICATION_PROPERTIES.getString(INDEX_SEARCH_VERTEX_PREFIX_PROPERTY, 
INDEX_SEARCH_VERTEX_PREFIX_DEFAULT);
+        }
+
+        return ret;
+    }
+
+    private void initApplicationProperties() {
+        if (APPLICATION_PROPERTIES == null) {
+            try {
+                APPLICATION_PROPERTIES = ApplicationProperties.get();
+            } catch (AtlasException ex) {
+                // ignore
+            }
+        }
+    }
 }
diff --git 
a/graphdb/titan1/src/main/java/org/apache/atlas/repository/graphdb/titan1/Titan1Graph.java
 
b/graphdb/titan1/src/main/java/org/apache/atlas/repository/graphdb/titan1/Titan1Graph.java
index 622c900..6473d9b 100644
--- 
a/graphdb/titan1/src/main/java/org/apache/atlas/repository/graphdb/titan1/Titan1Graph.java
+++ 
b/graphdb/titan1/src/main/java/org/apache/atlas/repository/graphdb/titan1/Titan1Graph.java
@@ -29,6 +29,8 @@ import com.thinkaurelius.titan.core.TitanIndexQuery;
 import com.thinkaurelius.titan.core.schema.TitanGraphIndex;
 import com.thinkaurelius.titan.core.schema.TitanManagement;
 import com.thinkaurelius.titan.core.util.TitanCleanup;
+import org.apache.atlas.ApplicationProperties;
+import org.apache.atlas.AtlasException;
 import org.apache.atlas.AtlasErrorCode;
 import org.apache.atlas.exception.AtlasBaseException;
 import org.apache.atlas.groovy.GroovyExpression;
@@ -43,6 +45,7 @@ import org.apache.atlas.repository.graphdb.GremlinVersion;
 import org.apache.atlas.repository.graphdb.titan1.query.Titan1GraphQuery;
 import org.apache.atlas.repository.graphdb.utils.IteratorToIterableAdapter;
 import org.apache.atlas.typesystem.types.IDataType;
+import org.apache.commons.configuration.Configuration;
 import org.apache.tinkerpop.gremlin.groovy.CompilerCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.DefaultImportCustomizerProvider;
 import org.apache.tinkerpop.gremlin.groovy.jsr223.GremlinGroovyScriptEngine;
@@ -68,6 +71,9 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
+import static 
org.apache.atlas.repository.Constants.INDEX_SEARCH_VERTEX_PREFIX_DEFAULT;
+import static 
org.apache.atlas.repository.Constants.INDEX_SEARCH_VERTEX_PREFIX_PROPERTY;
+
 /**
  * Titan 1.0.0 implementation of AtlasGraph.
  */
@@ -75,6 +81,8 @@ public class Titan1Graph implements AtlasGraph<Titan1Vertex, 
Titan1Edge> {
 
     private final ConvertGremlinValueFunction 
GREMLIN_VALUE_CONVERSION_FUNCTION = new ConvertGremlinValueFunction();
 
+    private static Configuration APPLICATION_PROPERTIES = null;
+
     private final class ConvertGremlinValueFunction implements 
Function<Object, Object> {
         @Override
         public Object apply(Object input) {
@@ -199,7 +207,8 @@ public class Titan1Graph implements 
AtlasGraph<Titan1Vertex, Titan1Edge> {
 
     @Override
     public AtlasIndexQuery<Titan1Vertex, Titan1Edge> indexQuery(String 
fulltextIndex, String graphQuery, int offset) {
-        TitanIndexQuery query = getGraph().indexQuery(fulltextIndex, 
graphQuery).offset(offset);
+        String prefix = getIndexQueryPrefix();
+        TitanIndexQuery query = getGraph().indexQuery(fulltextIndex, 
graphQuery).setElementIdentifier(prefix).offset(offset);
         return new Titan1IndexQuery(this, query);
     }
 
@@ -427,4 +436,27 @@ public class Titan1Graph implements 
AtlasGraph<Titan1Vertex, Titan1Edge> {
         multiProperties.addAll(names);
     }
 
+    public String getIndexQueryPrefix() {
+        String ret;
+
+        initApplicationProperties();
+
+        if (APPLICATION_PROPERTIES == null) {
+            ret = INDEX_SEARCH_VERTEX_PREFIX_DEFAULT;
+        } else {
+            ret = 
APPLICATION_PROPERTIES.getString(INDEX_SEARCH_VERTEX_PREFIX_PROPERTY, 
INDEX_SEARCH_VERTEX_PREFIX_DEFAULT);
+        }
+
+        return ret;
+    }
+
+    private void initApplicationProperties() {
+        if (APPLICATION_PROPERTIES == null) {
+            try {
+                APPLICATION_PROPERTIES = ApplicationProperties.get();
+            } catch (AtlasException ex) {
+                // ignore
+            }
+        }
+    }
 }
diff --git 
a/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
 
b/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
index 5de4db5..ea69d95 100644
--- 
a/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
+++ 
b/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
@@ -51,6 +51,7 @@ import org.apache.atlas.repository.graphdb.AtlasGraph;
 import org.apache.atlas.repository.graphdb.AtlasIndexQuery;
 import org.apache.atlas.repository.graphdb.AtlasIndexQuery.Result;
 import org.apache.atlas.repository.graphdb.AtlasVertex;
+import org.apache.atlas.repository.store.graph.v1.AtlasGraphUtilsV1;
 import org.apache.atlas.repository.store.graph.v1.EntityGraphRetriever;
 import org.apache.atlas.repository.userprofile.UserProfileService;
 import org.apache.atlas.type.AtlasArrayType;
@@ -113,6 +114,7 @@ public class EntityDiscoveryService implements 
AtlasDiscoveryService {
     private final int                             maxResultSetSize;
     private final int                             maxTypesLengthInIdxQuery;
     private final int                             maxTagsLengthInIdxQuery;
+    private final String                          indexSearchPrefix;
     private final UserProfileService              userProfileService;
 
     @Inject
@@ -129,6 +131,7 @@ public class EntityDiscoveryService implements 
AtlasDiscoveryService {
         this.maxResultSetSize         = 
ApplicationProperties.get().getInt(Constants.INDEX_SEARCH_MAX_RESULT_SET_SIZE, 
150);
         this.maxTypesLengthInIdxQuery = 
ApplicationProperties.get().getInt(Constants.INDEX_SEARCH_TYPES_MAX_QUERY_STR_LENGTH,
 512);
         this.maxTagsLengthInIdxQuery  = 
ApplicationProperties.get().getInt(Constants.INDEX_SEARCH_TAGS_MAX_QUERY_STR_LENGTH,
 512);
+        this.indexSearchPrefix        = 
AtlasGraphUtilsV1.getIndexSearchPrefix();
         this.userProfileService       = userProfileService;
     }
 
@@ -660,7 +663,7 @@ public class EntityDiscoveryService implements 
AtlasDiscoveryService {
             queryText.append(classificationFilter);
         }
 
-        return String.format("v.\"%s\":(%s)", 
Constants.ENTITY_TEXT_PROPERTY_KEY, queryText.toString());
+        return String.format(indexSearchPrefix + "\"%s\":(%s)", 
Constants.ENTITY_TEXT_PROPERTY_KEY, queryText.toString());
     }
 
     private List<AtlasFullTextResult> getIndexQueryResults(AtlasIndexQuery 
query, QueryParams params, boolean excludeDeletedEntities) throws 
AtlasBaseException {
@@ -724,7 +727,7 @@ public class EntityDiscoveryService implements 
AtlasDiscoveryService {
     }
 
     private AtlasIndexQuery toAtlasIndexQuery(String fullTextQuery) {
-        String graphQuery = String.format("v.\"%s\":(%s)", 
Constants.ENTITY_TEXT_PROPERTY_KEY, fullTextQuery);
+        String graphQuery = String.format(indexSearchPrefix + "\"%s\":(%s)", 
Constants.ENTITY_TEXT_PROPERTY_KEY, fullTextQuery);
         return graph.indexQuery(Constants.FULLTEXT_INDEX, graphQuery);
     }
 
diff --git 
a/repository/src/main/java/org/apache/atlas/discovery/FullTextSearchProcessor.java
 
b/repository/src/main/java/org/apache/atlas/discovery/FullTextSearchProcessor.java
index 5ffd88b..d205f71 100644
--- 
a/repository/src/main/java/org/apache/atlas/discovery/FullTextSearchProcessor.java
+++ 
b/repository/src/main/java/org/apache/atlas/discovery/FullTextSearchProcessor.java
@@ -44,7 +44,7 @@ public class FullTextSearchProcessor extends SearchProcessor {
         SearchParameters searchParameters = context.getSearchParameters();
         StringBuilder    queryString      = new StringBuilder();
 
-        
queryString.append("v.\"").append(Constants.ENTITY_TEXT_PROPERTY_KEY).append("\":(").append(searchParameters.getQuery());
+        queryString.append(INDEX_SEARCH_PREFIX + 
"\"").append(Constants.ENTITY_TEXT_PROPERTY_KEY).append("\":(").append(searchParameters.getQuery());
 
         // if search includes entity-type criteria, adding a filter here can 
help avoid unnecessary
         // processing (and rejection) by subsequent EntitySearchProcessor
diff --git 
a/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java 
b/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
index fab7074..406d3cd 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
@@ -68,56 +68,57 @@ public abstract class SearchProcessor {
     public static final int     MAX_RESULT_SIZE            = 
getApplicationProperty(Constants.INDEX_SEARCH_MAX_RESULT_SET_SIZE, 150);
     public static final int     MAX_QUERY_STR_LENGTH_TYPES = 
getApplicationProperty(Constants.INDEX_SEARCH_TYPES_MAX_QUERY_STR_LENGTH, 512);
     public static final int     MAX_QUERY_STR_LENGTH_TAGS  = 
getApplicationProperty(Constants.INDEX_SEARCH_TAGS_MAX_QUERY_STR_LENGTH, 512);
-    public static final String  AND_STR         = " AND ";
-    public static final String  EMPTY_STRING    = "";
-    public static final String  SPACE_STRING    = " ";
-    public static final String  BRACE_OPEN_STR  = "(";
-    public static final String  BRACE_CLOSE_STR = ")";
+    public static final String  INDEX_SEARCH_PREFIX        = 
AtlasGraphUtilsV1.getIndexSearchPrefix();
+    public static final String  AND_STR                    = " AND ";
+    public static final String  EMPTY_STRING               = "";
+    public static final String  SPACE_STRING               = " ";
+    public static final String  BRACE_OPEN_STR             = "(";
+    public static final String  BRACE_CLOSE_STR            = ")";
 
     private static final Map<SearchParameters.Operator, String>                
            OPERATOR_MAP           = new HashMap<>();
     private static final Map<SearchParameters.Operator, 
VertexAttributePredicateGenerator> OPERATOR_PREDICATE_MAP = new HashMap<>();
 
     static
     {
-        OPERATOR_MAP.put(SearchParameters.Operator.LT,"v.\"%s\": [* TO %s}");
+        OPERATOR_MAP.put(SearchParameters.Operator.LT, INDEX_SEARCH_PREFIX + 
"\"%s\": [* TO %s}");
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.LT, 
getLTPredicateGenerator());
 
-        OPERATOR_MAP.put(SearchParameters.Operator.GT,"v.\"%s\": {%s TO *]");
+        OPERATOR_MAP.put(SearchParameters.Operator.GT, INDEX_SEARCH_PREFIX + 
"\"%s\": {%s TO *]");
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.GT, 
getGTPredicateGenerator());
 
-        OPERATOR_MAP.put(SearchParameters.Operator.LTE,"v.\"%s\": [* TO %s]");
+        OPERATOR_MAP.put(SearchParameters.Operator.LTE, INDEX_SEARCH_PREFIX + 
"\"%s\": [* TO %s]");
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.LTE, 
getLTEPredicateGenerator());
 
-        OPERATOR_MAP.put(SearchParameters.Operator.GTE,"v.\"%s\": [%s TO *]");
+        OPERATOR_MAP.put(SearchParameters.Operator.GTE, INDEX_SEARCH_PREFIX + 
"\"%s\": [%s TO *]");
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.GTE, 
getGTEPredicateGenerator());
 
-        OPERATOR_MAP.put(SearchParameters.Operator.EQ,"v.\"%s\": %s");
+        OPERATOR_MAP.put(SearchParameters.Operator.EQ, INDEX_SEARCH_PREFIX + 
"\"%s\": %s");
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.EQ, 
getEQPredicateGenerator());
 
-        OPERATOR_MAP.put(SearchParameters.Operator.NEQ,"(*:* -" + "v.\"%s\": 
%s)");
+        OPERATOR_MAP.put(SearchParameters.Operator.NEQ, "(*:* -" + 
INDEX_SEARCH_PREFIX + "\"%s\": %s)");
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.NEQ, 
getNEQPredicateGenerator());
 
-        OPERATOR_MAP.put(SearchParameters.Operator.IN, "v.\"%s\": (%s)"); // 
this should be a list of quoted strings
+        OPERATOR_MAP.put(SearchParameters.Operator.IN, INDEX_SEARCH_PREFIX + 
"\"%s\": (%s)"); // this should be a list of quoted strings
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.IN, 
getINPredicateGenerator()); // this should be a list of quoted strings
 
-        OPERATOR_MAP.put(SearchParameters.Operator.LIKE, "v.\"%s\": (%s)"); // 
this should be regex pattern
+        OPERATOR_MAP.put(SearchParameters.Operator.LIKE, INDEX_SEARCH_PREFIX + 
"\"%s\": (%s)"); // this should be regex pattern
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.LIKE, 
getLIKEPredicateGenerator()); // this should be regex pattern
 
-        OPERATOR_MAP.put(SearchParameters.Operator.STARTS_WITH, "v.\"%s\": 
(%s*)");
+        OPERATOR_MAP.put(SearchParameters.Operator.STARTS_WITH, 
INDEX_SEARCH_PREFIX + "\"%s\": (%s*)");
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.STARTS_WITH, 
getStartsWithPredicateGenerator());
 
-        OPERATOR_MAP.put(SearchParameters.Operator.ENDS_WITH, "v.\"%s\": 
(*%s)");
+        OPERATOR_MAP.put(SearchParameters.Operator.ENDS_WITH, 
INDEX_SEARCH_PREFIX + "\"%s\": (*%s)");
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.ENDS_WITH, 
getEndsWithPredicateGenerator());
 
-        OPERATOR_MAP.put(SearchParameters.Operator.CONTAINS, "v.\"%s\": 
(*%s*)");
+        OPERATOR_MAP.put(SearchParameters.Operator.CONTAINS, 
INDEX_SEARCH_PREFIX + "\"%s\": (*%s*)");
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.CONTAINS, 
getContainsPredicateGenerator());
 
         // TODO: Add contains any, contains all mappings here
 
-        OPERATOR_MAP.put(SearchParameters.Operator.IS_NULL, "(*:* NOT 
v.\"%s\":[* TO *])");
+        OPERATOR_MAP.put(SearchParameters.Operator.IS_NULL, "(*:* NOT " + 
INDEX_SEARCH_PREFIX + "\"%s\":[* TO *])");
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.IS_NULL, 
getIsNullPredicateGenerator());
 
-        OPERATOR_MAP.put(SearchParameters.Operator.NOT_NULL, "v.\"%s\":[* TO 
*]");
+        OPERATOR_MAP.put(SearchParameters.Operator.NOT_NULL, 
INDEX_SEARCH_PREFIX + "\"%s\":[* TO *]");
         OPERATOR_PREDICATE_MAP.put(SearchParameters.Operator.NOT_NULL, 
getNotNullPredicateGenerator());
     }
 
@@ -255,7 +256,7 @@ public abstract class SearchProcessor {
                 indexQuery.append(AND_STR);
             }
 
-            
indexQuery.append("v.\"").append(Constants.TYPE_NAME_PROPERTY_KEY).append("\":").append(typeAndAllSubTypesQryStr);
+            indexQuery.append(INDEX_SEARCH_PREFIX + 
"\"").append(Constants.TYPE_NAME_PROPERTY_KEY).append("\":").append(typeAndAllSubTypesQryStr);
         }
     }
 
@@ -337,7 +338,7 @@ public abstract class SearchProcessor {
             indexQuery.append(AND_STR);
         }
 
-        
indexQuery.append("v.\"").append(Constants.STATE_PROPERTY_KEY).append("\":ACTIVE");
+        indexQuery.append(INDEX_SEARCH_PREFIX + 
"\"").append(Constants.STATE_PROPERTY_KEY).append("\":ACTIVE");
     }
 
     private boolean isIndexSearchable(FilterCriteria filterCriteria, 
AtlasStructType structType) throws AtlasBaseException {
diff --git 
a/repository/src/main/java/org/apache/atlas/discovery/graph/GraphBackedDiscoveryService.java
 
b/repository/src/main/java/org/apache/atlas/discovery/graph/GraphBackedDiscoveryService.java
index e5e527f..340351e 100755
--- 
a/repository/src/main/java/org/apache/atlas/discovery/graph/GraphBackedDiscoveryService.java
+++ 
b/repository/src/main/java/org/apache/atlas/discovery/graph/GraphBackedDiscoveryService.java
@@ -69,6 +69,7 @@ public class GraphBackedDiscoveryService implements 
DiscoveryService {
     private static final Logger LOG = 
LoggerFactory.getLogger(GraphBackedDiscoveryService.class);
 
     private final AtlasGraph graph;
+    private final String indexSearchPrefix;
     private final DefaultGraphPersistenceStrategy graphPersistenceStrategy;
 
     public final static String SCORE = "score";
@@ -93,6 +94,7 @@ public class GraphBackedDiscoveryService implements 
DiscoveryService {
     GraphBackedDiscoveryService(MetadataRepository metadataRepository, 
AtlasGraph atlasGraph)
     throws DiscoveryException {
         this.graph = atlasGraph;
+        this.indexSearchPrefix = AtlasGraphUtilsV1.getIndexSearchPrefix();
         this.graphPersistenceStrategy = new 
DefaultGraphPersistenceStrategy(metadataRepository);
     }
 
@@ -102,7 +104,7 @@ public class GraphBackedDiscoveryService implements 
DiscoveryService {
     @Override
     @GraphTransaction
     public String searchByFullText(String query, QueryParams queryParams) 
throws DiscoveryException {
-        String graphQuery = String.format("v.\"%s\":(%s)", 
Constants.ENTITY_TEXT_PROPERTY_KEY, query);
+        String graphQuery = String.format(indexSearchPrefix + "\"%s\":(%s)", 
Constants.ENTITY_TEXT_PROPERTY_KEY, query);
         LOG.debug("Full text query: {}", graphQuery);
         Iterator<AtlasIndexQuery.Result<?, ?>> results 
=graph.indexQuery(Constants.FULLTEXT_INDEX, graphQuery).vertices();
         JSONArray response = new JSONArray();
diff --git 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
index bf46c47..b9488ee 100644
--- 
a/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
+++ 
b/repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
@@ -51,23 +51,28 @@ import java.util.Iterator;
 import java.util.Map;
 import java.util.Set;
 
+import static 
org.apache.atlas.repository.Constants.INDEX_SEARCH_VERTEX_PREFIX_DEFAULT;
+import static 
org.apache.atlas.repository.Constants.INDEX_SEARCH_VERTEX_PREFIX_PROPERTY;
+
 /**
  * Utility methods for Graph.
  */
 public class AtlasGraphUtilsV1 {
     private static final Logger LOG = 
LoggerFactory.getLogger(AtlasGraphUtilsV1.class);
 
-    public static final String PROPERTY_PREFIX      = 
Constants.INTERNAL_PROPERTY_KEY_PREFIX + "type.";
-    public static final String SUPERTYPE_EDGE_LABEL = PROPERTY_PREFIX + 
".supertype";
-    public static final String VERTEX_TYPE          = "typeSystem";
+    public static final String PROPERTY_PREFIX             = 
Constants.INTERNAL_PROPERTY_KEY_PREFIX + "type.";
+    public static final String SUPERTYPE_EDGE_LABEL        = PROPERTY_PREFIX + 
".supertype";
+    public static final String VERTEX_TYPE                 = "typeSystem";
 
     private static boolean USE_INDEX_QUERY_TO_FIND_ENTITY_BY_UNIQUE_ATTRIBUTES 
= false;
+    private static String  INDEX_SEARCH_PREFIX = 
INDEX_SEARCH_VERTEX_PREFIX_DEFAULT;
 
     static {
         try {
             Configuration conf = ApplicationProperties.get();
 
             USE_INDEX_QUERY_TO_FIND_ENTITY_BY_UNIQUE_ATTRIBUTES = 
conf.getBoolean("atlas.use.index.query.to.find.entity.by.unique.attributes", 
USE_INDEX_QUERY_TO_FIND_ENTITY_BY_UNIQUE_ATTRIBUTES);
+            INDEX_SEARCH_PREFIX                                 = 
conf.getString(INDEX_SEARCH_VERTEX_PREFIX_PROPERTY, 
INDEX_SEARCH_VERTEX_PREFIX_DEFAULT);
         } catch (Exception excp) {
             LOG.error("Error reading configuration", excp);
         } finally {
@@ -466,12 +471,16 @@ public class AtlasGraphUtilsV1 {
     private static AtlasIndexQuery getIndexQuery(AtlasEntityType entityType, 
String propertyName, String value) {
         StringBuilder sb = new StringBuilder();
 
-        
sb.append("v.\"").append(Constants.TYPE_NAME_PROPERTY_KEY).append("\":").append(entityType.getTypeAndAllSubTypesQryStr())
+        sb.append(INDEX_SEARCH_PREFIX + 
"\"").append(Constants.TYPE_NAME_PROPERTY_KEY).append("\":").append(entityType.getTypeAndAllSubTypesQryStr())
                 .append(" AND ")
-                
.append("v.\"").append(propertyName).append("\":").append(AtlasAttribute.escapeIndexQueryValue(value))
+                .append(INDEX_SEARCH_PREFIX + 
"\"").append(propertyName).append("\":").append(AtlasAttribute.escapeIndexQueryValue(value))
                 .append(" AND ")
-                
.append("v.\"").append(Constants.STATE_PROPERTY_KEY).append("\":ACTIVE");
+                .append(INDEX_SEARCH_PREFIX + 
"\"").append(Constants.STATE_PROPERTY_KEY).append("\":ACTIVE");
 
         return 
AtlasGraphProvider.getGraphInstance().indexQuery(Constants.VERTEX_INDEX, 
sb.toString());
     }
+
+    public static String getIndexSearchPrefix() {
+        return INDEX_SEARCH_PREFIX;
+    }
 }
diff --git 
a/repository/src/test/java/org/apache/atlas/repository/graph/GraphRepoMapperScaleTest.java
 
b/repository/src/test/java/org/apache/atlas/repository/graph/GraphRepoMapperScaleTest.java
index 1f077ba..522c368 100755
--- 
a/repository/src/test/java/org/apache/atlas/repository/graph/GraphRepoMapperScaleTest.java
+++ 
b/repository/src/test/java/org/apache/atlas/repository/graph/GraphRepoMapperScaleTest.java
@@ -30,6 +30,7 @@ import org.apache.atlas.repository.graphdb.AtlasGraphQuery;
 import org.apache.atlas.repository.graphdb.AtlasGraphQuery.ComparisionOperator;
 import org.apache.atlas.repository.graphdb.AtlasIndexQuery;
 import org.apache.atlas.repository.graphdb.AtlasVertex;
+import org.apache.atlas.repository.store.graph.v1.AtlasGraphUtilsV1;
 import org.apache.atlas.type.AtlasTypeRegistry;
 import org.apache.atlas.typesystem.ITypedReferenceableInstance;
 import org.apache.atlas.typesystem.Referenceable;
@@ -59,6 +60,7 @@ public class GraphRepoMapperScaleTest {
 
     private static final String DATABASE_NAME = "foo";
     private static final String TABLE_NAME = "bar";
+    private String indexSearchPrefix;
 
     @Inject
     private GraphBackedMetadataRepository repositoryService;
@@ -79,6 +81,7 @@ public class GraphRepoMapperScaleTest {
         //Make sure we can cleanup the index directory
         Collection<IDataType> typesAdded = 
TestUtils.createHiveTypes(typeSystem);
         searchIndexer.onAdd(typesAdded);
+        this.indexSearchPrefix = AtlasGraphUtilsV1.getIndexSearchPrefix();
     }
 
     @BeforeMethod
@@ -159,7 +162,7 @@ public class GraphRepoMapperScaleTest {
         long start = System.currentTimeMillis();
         int count = 0;
         try {
-            String queryString = "v.\"" + key + "\":(" + value + ")";
+            String queryString = indexSearchPrefix + "\"" + key + "\":(" + 
value + ")";
             AtlasIndexQuery query = graph.indexQuery(Constants.VERTEX_INDEX, 
queryString);
             Iterator<AtlasIndexQuery.Result> result = query.vertices();
             while(result.hasNext()) {

Reply via email to