You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by ma...@apache.org on 2019/09/15 19:13:25 UTC
[atlas] branch branch-2.0 updated: ATLAS-3367: updated
search-result to include approximate-total-count if available
This is an automated email from the ASF dual-hosted git repository.
madhan pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/atlas.git
The following commit(s) were added to refs/heads/branch-2.0 by this push:
new 32534dd ATLAS-3367: updated search-result to include approximate-total-count if available
32534dd is described below
commit 32534dd4a137953892338b7ca7ee4bb107e3f8e7
Author: Bolke de Bruin <bo...@xs4all.nl>
AuthorDate: Mon Aug 12 14:16:44 2019 +0200
ATLAS-3367: updated search-result to include approximate-total-count if available
Signed-off-by: Madhan Neethiraj <ma...@apache.org>
(cherry picked from commit 5ab09475e097af72f70694518bb65bb6ac0d868d)
---
.../org/apache/atlas/model/discovery/AtlasSearchResult.java | 6 ++++++
.../apache/atlas/discovery/ClassificationSearchProcessor.java | 5 +++++
.../org/apache/atlas/discovery/EntityDiscoveryService.java | 11 +++++++++--
.../org/apache/atlas/discovery/EntitySearchProcessor.java | 5 +++++
.../org/apache/atlas/discovery/FreeTextSearchProcessor.java | 5 +++++
.../org/apache/atlas/discovery/FullTextSearchProcessor.java | 5 +++++
.../main/java/org/apache/atlas/discovery/SearchProcessor.java | 1 +
.../java/org/apache/atlas/discovery/TermSearchProcessor.java | 5 +++++
8 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/intg/src/main/java/org/apache/atlas/model/discovery/AtlasSearchResult.java b/intg/src/main/java/org/apache/atlas/model/discovery/AtlasSearchResult.java
index d274cc0..e1c550e 100644
--- a/intg/src/main/java/org/apache/atlas/model/discovery/AtlasSearchResult.java
+++ b/intg/src/main/java/org/apache/atlas/model/discovery/AtlasSearchResult.java
@@ -52,6 +52,7 @@ public class AtlasSearchResult implements Serializable {
private AttributeSearchResult attributes;
private List<AtlasFullTextResult> fullTextResult;
private Map<String, AtlasEntityHeader> referredEntities;
+ private long approximateCount = -1;
public AtlasSearchResult() {}
@@ -126,6 +127,10 @@ public class AtlasSearchResult implements Serializable {
this.referredEntities = referredEntities;
}
+ public long getApproximateCount() { return approximateCount; }
+
+ public void setApproximateCount(long approximateCount) { this.approximateCount = approximateCount; }
+
@Override
public int hashCode() { return Objects.hash(queryType, searchParameters, queryText, type, classification, entities, attributes, fullTextResult, referredEntities); }
@@ -184,6 +189,7 @@ public class AtlasSearchResult implements Serializable {
", attributes=" + attributes +
", fullTextResult=" + fullTextResult +
", referredEntities=" + referredEntities +
+ ", approximateCount=" + approximateCount +
'}';
}
diff --git a/repository/src/main/java/org/apache/atlas/discovery/ClassificationSearchProcessor.java b/repository/src/main/java/org/apache/atlas/discovery/ClassificationSearchProcessor.java
index 479ddfd..b457984 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/ClassificationSearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/ClassificationSearchProcessor.java
@@ -347,4 +347,9 @@ public class ClassificationSearchProcessor extends SearchProcessor {
LOG.debug("<== ClassificationSearchProcessor.filter(): ret.size()={}", entityVertices.size());
}
}
+
+ @Override
+ public long getResultCount() {
+ return (indexQuery != null) ? indexQuery.vertexTotals() : -1;
+ }
}
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 f667aa3..23fd7e9 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/EntityDiscoveryService.java
@@ -180,6 +180,7 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
LOG.debug("Executing Full text query: {}", fullTextQuery);
}
ret.setFullTextResult(getIndexQueryResults(idxQuery, params, excludeDeletedEntities));
+ ret.setApproximateCount(idxQuery.vertexTotals());
scrubSearchResults(ret);
@@ -285,7 +286,8 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
int resultIdx = 0;
for (int indexQueryOffset = 0; ; indexQueryOffset += getMaxResultSetSize()) {
- final Iterator<Result<?, ?>> qryResult = graph.indexQuery(Constants.FULLTEXT_INDEX, idxQuery, indexQueryOffset).vertices();
+ final AtlasIndexQuery qry = graph.indexQuery(Constants.FULLTEXT_INDEX, idxQuery, indexQueryOffset);
+ final Iterator<Result<?, ?>> qryResult = qry.vertices();
if (LOG.isDebugEnabled()) {
LOG.debug("indexQuery: query=" + idxQuery + "; offset=" + indexQueryOffset);
@@ -344,6 +346,10 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
}
}
+ if (ret.getApproximateCount() < 0) {
+ ret.setApproximateCount(qry.vertexTotals());
+ }
+
if (ret.getEntities() != null && ret.getEntities().size() == resultSize) {
break;
}
@@ -393,7 +399,6 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
if (firstElement instanceof AtlasVertex) {
for (Object element : queryResult) {
if (element instanceof AtlasVertex) {
-
ret.addEntity(entityRetriever.toAtlasEntityHeader((AtlasVertex) element));
} else {
LOG.warn("searchUsingBasicQuery({}): expected an AtlasVertex; found unexpected entry in result {}", basicQuery, element);
@@ -465,6 +470,8 @@ public class EntityDiscoveryService implements AtlasDiscoveryService {
try {
List<AtlasVertex> resultList = searchContext.getSearchProcessor().execute();
+ ret.setApproximateCount(searchContext.getSearchProcessor().getResultCount());
+
// By default any attribute that shows up in the search parameter should be sent back in the response
// If additional values are requested then the entityAttributes will be a superset of the all search attributes
// and the explicitly requested attribute(s)
diff --git a/repository/src/main/java/org/apache/atlas/discovery/EntitySearchProcessor.java b/repository/src/main/java/org/apache/atlas/discovery/EntitySearchProcessor.java
index f7d8f08..2e07814 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/EntitySearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/EntitySearchProcessor.java
@@ -311,4 +311,9 @@ public class EntitySearchProcessor extends SearchProcessor {
LOG.debug("<== EntitySearchProcessor.filter(): ret.size()={}", entityVertices.size());
}
}
+
+ @Override
+ public long getResultCount() {
+ return (indexQuery != null) ? indexQuery.vertexTotals() : -1;
+ }
}
diff --git a/repository/src/main/java/org/apache/atlas/discovery/FreeTextSearchProcessor.java b/repository/src/main/java/org/apache/atlas/discovery/FreeTextSearchProcessor.java
index 1dd1afa..d628f13 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/FreeTextSearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/FreeTextSearchProcessor.java
@@ -174,4 +174,9 @@ public class FreeTextSearchProcessor extends SearchProcessor {
return ret;
}
+
+ @Override
+ public long getResultCount() {
+ return indexQuery.vertexTotals();
+ }
}
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 0ffd61c..152ade8 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/FullTextSearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/FullTextSearchProcessor.java
@@ -166,4 +166,9 @@ public class FullTextSearchProcessor extends SearchProcessor {
return ret;
}
+
+ @Override
+ public long getResultCount() {
+ return indexQuery.vertexTotals();
+ }
}
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 f7847ed..a12ce3f 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/SearchProcessor.java
@@ -128,6 +128,7 @@ public abstract class SearchProcessor {
}
public abstract List<AtlasVertex> execute();
+ public abstract long getResultCount();
protected int collectResultVertices(final List<AtlasVertex> ret, final int startIdx, final int limit, int resultIdx, final List<AtlasVertex> entityVertices) {
for (AtlasVertex entityVertex : entityVertices) {
diff --git a/repository/src/main/java/org/apache/atlas/discovery/TermSearchProcessor.java b/repository/src/main/java/org/apache/atlas/discovery/TermSearchProcessor.java
index c253d54..6c48a82 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/TermSearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/TermSearchProcessor.java
@@ -110,4 +110,9 @@ public class TermSearchProcessor extends SearchProcessor {
LOG.debug("<== TermSearchProcessor.filter(): ret.size()={}", entityVertices.size());
}
}
+
+ @Override
+ public long getResultCount() {
+ return -1;
+ }
}