Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
A
atlas
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
dataplatform
atlas
Commits
84f4f103
Commit
84f4f103
authored
Jan 22, 2018
by
Sarath Subramanian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ATLAS-2371: Basic search issue with IndexSerializer
parent
4c2f7bf2
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
80 additions
and
34 deletions
+80
-34
Constants.java
.../src/main/java/org/apache/atlas/repository/Constants.java
+2
-0
AtlasJanusGraph.java
...pache/atlas/repository/graphdb/janus/AtlasJanusGraph.java
+34
-2
AtlasJanusIndexQuery.java
.../atlas/repository/graphdb/janus/AtlasJanusIndexQuery.java
+1
-2
EntityDiscoveryService.java
...va/org/apache/atlas/discovery/EntityDiscoveryService.java
+5
-2
FullTextSearchProcessor.java
...a/org/apache/atlas/discovery/FullTextSearchProcessor.java
+1
-1
SearchProcessor.java
...main/java/org/apache/atlas/discovery/SearchProcessor.java
+21
-20
AtlasGraphUtilsV1.java
...he/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
+16
-7
No files found.
common/src/main/java/org/apache/atlas/repository/Constants.java
View file @
84f4f103
...
@@ -100,6 +100,8 @@ public final class Constants {
...
@@ -100,6 +100,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_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_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_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_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"
;
public
static
final
String
MAX_DSL_QUERY_STR_LENGTH
=
"atlas.graph.dsl-max-query-str-length"
;
...
...
graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusGraph.java
View file @
84f4f103
...
@@ -21,7 +21,10 @@ import com.google.common.base.Function;
...
@@ -21,7 +21,10 @@ import com.google.common.base.Function;
import
com.google.common.collect.Iterables
;
import
com.google.common.collect.Iterables
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Lists
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
org.apache.atlas.ApplicationProperties
;
import
org.apache.atlas.AtlasException
;
import
org.apache.atlas.type.AtlasType
;
import
org.apache.atlas.type.AtlasType
;
import
org.apache.commons.configuration.Configuration
;
import
org.janusgraph.core.Cardinality
;
import
org.janusgraph.core.Cardinality
;
import
org.janusgraph.core.JanusGraphFactory
;
import
org.janusgraph.core.JanusGraphFactory
;
import
org.janusgraph.core.PropertyKey
;
import
org.janusgraph.core.PropertyKey
;
...
@@ -30,7 +33,6 @@ import org.janusgraph.core.JanusGraph;
...
@@ -30,7 +33,6 @@ import org.janusgraph.core.JanusGraph;
import
org.janusgraph.core.JanusGraphIndexQuery
;
import
org.janusgraph.core.JanusGraphIndexQuery
;
import
org.janusgraph.core.schema.JanusGraphIndex
;
import
org.janusgraph.core.schema.JanusGraphIndex
;
import
org.janusgraph.core.schema.JanusGraphManagement
;
import
org.janusgraph.core.schema.JanusGraphManagement
;
import
org.janusgraph.core.util.JanusGraphCleanup
;
import
org.apache.atlas.AtlasErrorCode
;
import
org.apache.atlas.AtlasErrorCode
;
import
org.apache.atlas.exception.AtlasBaseException
;
import
org.apache.atlas.exception.AtlasBaseException
;
import
org.apache.atlas.groovy.GroovyExpression
;
import
org.apache.atlas.groovy.GroovyExpression
;
...
@@ -70,6 +72,9 @@ import java.util.List;
...
@@ -70,6 +72,9 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Set
;
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
;
/**
/**
* Janus implementation of AtlasGraph.
* Janus implementation of AtlasGraph.
*/
*/
...
@@ -77,6 +82,8 @@ public class AtlasJanusGraph implements AtlasGraph<AtlasJanusVertex, AtlasJanusE
...
@@ -77,6 +82,8 @@ public class AtlasJanusGraph implements AtlasGraph<AtlasJanusVertex, AtlasJanusE
private
final
ConvertGremlinValueFunction
GREMLIN_VALUE_CONVERSION_FUNCTION
=
new
ConvertGremlinValueFunction
();
private
final
ConvertGremlinValueFunction
GREMLIN_VALUE_CONVERSION_FUNCTION
=
new
ConvertGremlinValueFunction
();
private
static
Configuration
APPLICATION_PROPERTIES
=
null
;
private
final
class
ConvertGremlinValueFunction
implements
Function
<
Object
,
Object
>
{
private
final
class
ConvertGremlinValueFunction
implements
Function
<
Object
,
Object
>
{
@Override
@Override
public
Object
apply
(
Object
input
)
{
public
Object
apply
(
Object
input
)
{
...
@@ -184,7 +191,9 @@ public class AtlasJanusGraph implements AtlasGraph<AtlasJanusVertex, AtlasJanusE
...
@@ -184,7 +191,9 @@ public class AtlasJanusGraph implements AtlasGraph<AtlasJanusVertex, AtlasJanusE
@Override
@Override
public
AtlasIndexQuery
<
AtlasJanusVertex
,
AtlasJanusEdge
>
indexQuery
(
String
fulltextIndex
,
String
graphQuery
,
int
offset
)
{
public
AtlasIndexQuery
<
AtlasJanusVertex
,
AtlasJanusEdge
>
indexQuery
(
String
fulltextIndex
,
String
graphQuery
,
int
offset
)
{
JanusGraphIndexQuery
query
=
getGraph
().
indexQuery
(
fulltextIndex
,
graphQuery
).
offset
(
offset
);
String
prefix
=
getIndexQueryPrefix
();
JanusGraphIndexQuery
query
=
getGraph
().
indexQuery
(
fulltextIndex
,
graphQuery
).
setElementIdentifier
(
prefix
).
offset
(
offset
);
return
new
AtlasJanusIndexQuery
(
this
,
query
);
return
new
AtlasJanusIndexQuery
(
this
,
query
);
}
}
...
@@ -432,4 +441,27 @@ public class AtlasJanusGraph implements AtlasGraph<AtlasJanusVertex, AtlasJanusE
...
@@ -432,4 +441,27 @@ public class AtlasJanusGraph implements AtlasGraph<AtlasJanusVertex, AtlasJanusE
multiProperties
.
addAll
(
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
}
}
}
}
}
graphdb/janus/src/main/java/org/apache/atlas/repository/graphdb/janus/AtlasJanusIndexQuery.java
View file @
84f4f103
...
@@ -32,8 +32,7 @@ import org.janusgraph.core.JanusGraphVertex;
...
@@ -32,8 +32,7 @@ import org.janusgraph.core.JanusGraphVertex;
* Janus implementation of AtlasIndexQuery.
* Janus implementation of AtlasIndexQuery.
*/
*/
public
class
AtlasJanusIndexQuery
implements
AtlasIndexQuery
<
AtlasJanusVertex
,
AtlasJanusEdge
>
{
public
class
AtlasJanusIndexQuery
implements
AtlasIndexQuery
<
AtlasJanusVertex
,
AtlasJanusEdge
>
{
private
AtlasJanusGraph
graph
;
private
AtlasJanusGraph
graph
;
private
JanusGraphIndexQuery
query
;
private
JanusGraphIndexQuery
query
;
public
AtlasJanusIndexQuery
(
AtlasJanusGraph
graph
,
JanusGraphIndexQuery
query
)
{
public
AtlasJanusIndexQuery
(
AtlasJanusGraph
graph
,
JanusGraphIndexQuery
query
)
{
...
...
repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
View file @
84f4f103
...
@@ -42,6 +42,7 @@ import org.apache.atlas.repository.graphdb.AtlasGraph;
...
@@ -42,6 +42,7 @@ import org.apache.atlas.repository.graphdb.AtlasGraph;
import
org.apache.atlas.repository.graphdb.AtlasIndexQuery
;
import
org.apache.atlas.repository.graphdb.AtlasIndexQuery
;
import
org.apache.atlas.repository.graphdb.AtlasIndexQuery.Result
;
import
org.apache.atlas.repository.graphdb.AtlasIndexQuery.Result
;
import
org.apache.atlas.repository.graphdb.AtlasVertex
;
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.store.graph.v1.EntityGraphRetriever
;
import
org.apache.atlas.repository.userprofile.UserProfileService
;
import
org.apache.atlas.repository.userprofile.UserProfileService
;
import
org.apache.atlas.type.AtlasArrayType
;
import
org.apache.atlas.type.AtlasArrayType
;
...
@@ -95,6 +96,7 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
...
@@ -95,6 +96,7 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
private
final
int
maxResultSetSize
;
private
final
int
maxResultSetSize
;
private
final
int
maxTypesLengthInIdxQuery
;
private
final
int
maxTypesLengthInIdxQuery
;
private
final
int
maxTagsLengthInIdxQuery
;
private
final
int
maxTagsLengthInIdxQuery
;
private
final
String
indexSearchPrefix
;
private
final
UserProfileService
userProfileService
;
private
final
UserProfileService
userProfileService
;
@Inject
@Inject
...
@@ -110,6 +112,7 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
...
@@ -110,6 +112,7 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
this
.
maxResultSetSize
=
ApplicationProperties
.
get
().
getInt
(
Constants
.
INDEX_SEARCH_MAX_RESULT_SET_SIZE
,
150
);
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
.
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
.
maxTagsLengthInIdxQuery
=
ApplicationProperties
.
get
().
getInt
(
Constants
.
INDEX_SEARCH_TAGS_MAX_QUERY_STR_LENGTH
,
512
);
this
.
indexSearchPrefix
=
AtlasGraphUtilsV1
.
getIndexSearchPrefix
();
this
.
userProfileService
=
userProfileService
;
this
.
userProfileService
=
userProfileService
;
}
}
...
@@ -642,7 +645,7 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
...
@@ -642,7 +645,7 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
queryText
.
append
(
classificationFilter
);
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
{
private
List
<
AtlasFullTextResult
>
getIndexQueryResults
(
AtlasIndexQuery
query
,
QueryParams
params
,
boolean
excludeDeletedEntities
)
throws
AtlasBaseException
{
...
@@ -681,7 +684,7 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
...
@@ -681,7 +684,7 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
}
}
private
AtlasIndexQuery
toAtlasIndexQuery
(
String
fullTextQuery
)
{
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
);
return
graph
.
indexQuery
(
Constants
.
FULLTEXT_INDEX
,
graphQuery
);
}
}
...
...
repository/src/main/java/org/apache/atlas/discovery/FullTextSearchProcessor.java
View file @
84f4f103
...
@@ -44,7 +44,7 @@ public class FullTextSearchProcessor extends SearchProcessor {
...
@@ -44,7 +44,7 @@ public class FullTextSearchProcessor extends SearchProcessor {
SearchParameters
searchParameters
=
context
.
getSearchParameters
();
SearchParameters
searchParameters
=
context
.
getSearchParameters
();
StringBuilder
queryString
=
new
StringBuilder
();
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
// if search includes entity-type criteria, adding a filter here can help avoid unnecessary
// processing (and rejection) by subsequent EntitySearchProcessor
// processing (and rejection) by subsequent EntitySearchProcessor
...
...
repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
View file @
84f4f103
...
@@ -60,56 +60,57 @@ public abstract class SearchProcessor {
...
@@ -60,56 +60,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_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_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
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
INDEX_SEARCH_PREFIX
=
AtlasGraphUtilsV1
.
getIndexSearchPrefix
();
public
static
final
String
EMPTY_STRING
=
""
;
public
static
final
String
AND_STR
=
" AND "
;
public
static
final
String
SPACE_STRING
=
" "
;
public
static
final
String
EMPTY_STRING
=
""
;
public
static
final
String
BRACE_OPEN_STR
=
"("
;
public
static
final
String
SPACE_STRING
=
" "
;
public
static
final
String
BRACE_CLOSE_STR
=
")"
;
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
,
String
>
OPERATOR_MAP
=
new
HashMap
<>();
private
static
final
Map
<
SearchParameters
.
Operator
,
VertexAttributePredicateGenerator
>
OPERATOR_PREDICATE_MAP
=
new
HashMap
<>();
private
static
final
Map
<
SearchParameters
.
Operator
,
VertexAttributePredicateGenerator
>
OPERATOR_PREDICATE_MAP
=
new
HashMap
<>();
static
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_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_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_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_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_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_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_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_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_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_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
());
OPERATOR_PREDICATE_MAP
.
put
(
SearchParameters
.
Operator
.
CONTAINS
,
getContainsPredicateGenerator
());
// TODO: Add contains any, contains all mappings here
// 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_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
());
OPERATOR_PREDICATE_MAP
.
put
(
SearchParameters
.
Operator
.
NOT_NULL
,
getNotNullPredicateGenerator
());
}
}
...
@@ -247,7 +248,7 @@ public abstract class SearchProcessor {
...
@@ -247,7 +248,7 @@ public abstract class SearchProcessor {
indexQuery
.
append
(
AND_STR
);
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
);
}
}
}
}
...
@@ -329,7 +330,7 @@ public abstract class SearchProcessor {
...
@@ -329,7 +330,7 @@ public abstract class SearchProcessor {
indexQuery
.
append
(
AND_STR
);
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
{
private
boolean
isIndexSearchable
(
FilterCriteria
filterCriteria
,
AtlasStructType
structType
)
throws
AtlasBaseException
{
...
...
repository/src/main/java/org/apache/atlas/repository/store/graph/v1/AtlasGraphUtilsV1.java
View file @
84f4f103
...
@@ -52,25 +52,30 @@ import java.util.List;
...
@@ -52,25 +52,30 @@ import java.util.List;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Set
;
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.
* Utility methods for Graph.
*/
*/
public
class
AtlasGraphUtilsV1
{
public
class
AtlasGraphUtilsV1
{
private
static
final
Logger
LOG
=
LoggerFactory
.
getLogger
(
AtlasGraphUtilsV1
.
class
);
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
PROPERTY_PREFIX
=
Constants
.
INTERNAL_PROPERTY_KEY_PREFIX
+
"type."
;
public
static
final
String
SUPERTYPE_EDGE_LABEL
=
PROPERTY_PREFIX
+
".supertype"
;
public
static
final
String
SUPERTYPE_EDGE_LABEL
=
PROPERTY_PREFIX
+
".supertype"
;
public
static
final
String
ENTITYTYPE_EDGE_LABEL
=
PROPERTY_PREFIX
+
".entitytype"
;
public
static
final
String
ENTITYTYPE_EDGE_LABEL
=
PROPERTY_PREFIX
+
".entitytype"
;
public
static
final
String
VERTEX_TYPE
=
"typeSystem"
;
public
static
final
String
RELATIONSHIPTYPE_EDGE_LABEL
=
PROPERTY_PREFIX
+
".relationshipType"
;
public
static
final
String
RELATIONSHIPTYPE_EDGE_LABEL
=
PROPERTY_PREFIX
+
".relationshipType"
;
public
static
final
String
VERTEX_TYPE
=
"typeSystem"
;
private
static
boolean
USE_INDEX_QUERY_TO_FIND_ENTITY_BY_UNIQUE_ATTRIBUTES
=
false
;
private
static
boolean
USE_INDEX_QUERY_TO_FIND_ENTITY_BY_UNIQUE_ATTRIBUTES
=
false
;
private
static
String
INDEX_SEARCH_PREFIX
;
static
{
static
{
try
{
try
{
Configuration
conf
=
ApplicationProperties
.
get
();
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
);
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
)
{
}
catch
(
Exception
excp
)
{
LOG
.
error
(
"Error reading configuration"
,
excp
);
LOG
.
error
(
"Error reading configuration"
,
excp
);
}
finally
{
}
finally
{
...
@@ -478,12 +483,16 @@ public class AtlasGraphUtilsV1 {
...
@@ -478,12 +483,16 @@ public class AtlasGraphUtilsV1 {
private
static
AtlasIndexQuery
getIndexQuery
(
AtlasEntityType
entityType
,
String
propertyName
,
String
value
)
{
private
static
AtlasIndexQuery
getIndexQuery
(
AtlasEntityType
entityType
,
String
propertyName
,
String
value
)
{
StringBuilder
sb
=
new
StringBuilder
();
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
(
" AND "
)
.
append
(
"v.
\""
).
append
(
propertyName
).
append
(
"\":"
).
append
(
AtlasAttribute
.
escapeIndexQueryValue
(
value
))
.
append
(
INDEX_SEARCH_PREFIX
+
"
\""
).
append
(
propertyName
).
append
(
"\":"
).
append
(
AtlasAttribute
.
escapeIndexQueryValue
(
value
))
.
append
(
" AND "
)
.
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
());
return
AtlasGraphProvider
.
getGraphInstance
().
indexQuery
(
Constants
.
VERTEX_INDEX
,
sb
.
toString
());
}
}
public
static
String
getIndexSearchPrefix
()
{
return
INDEX_SEARCH_PREFIX
;
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment