You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@atlas.apache.org by pi...@apache.org on 2021/10/08 13:50:57 UTC

[atlas] branch master updated: ATLAS-4436: Basic Search : Search By Query '*' gets internal entities also

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

pinal pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/atlas.git


The following commit(s) were added to refs/heads/master by this push:
     new a8ecfdf  ATLAS-4436: Basic Search : Search By Query '*' gets internal entities also
a8ecfdf is described below

commit a8ecfdf8d735b56f35af9c0e6f47990b91910ba0
Author: Shraddha Chauhan <sh...@freestoneinfotech.com>
AuthorDate: Thu Sep 23 15:56:46 2021 +0530

    ATLAS-4436: Basic Search : Search By Query '*' gets internal entities also
    
    Signed-off-by: Pinal Shah <pi...@freestoneinfotech.com>
---
 .../atlas/discovery/FreeTextSearchProcessor.java   | 11 +++++++-
 .../atlas/discovery/FullTextSearchProcessor.java   |  8 ++++++
 .../discovery/FreeTextSearchProcessorTest.java     | 31 +++++++++++++++++++++-
 3 files changed, 48 insertions(+), 2 deletions(-)

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 86f2cea..d0143c7 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/FreeTextSearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/FreeTextSearchProcessor.java
@@ -24,13 +24,17 @@ import org.apache.atlas.repository.Constants;
 import org.apache.atlas.repository.graph.GraphHelper;
 import org.apache.atlas.repository.graphdb.*;
 import org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2;
+import org.apache.atlas.type.AtlasEntityType;
 import org.apache.atlas.utils.AtlasPerfTracer;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
 
 
 /**
@@ -137,7 +141,12 @@ public class FreeTextSearchProcessor extends SearchProcessor {
                             if (LOG.isDebugEnabled()) {
                                 LOG.debug("FreeTextSearchProcessor.execute(): ignoring non-entity vertex (id={})", vertex.getId());
                             }
+                            continue;
+                        }
 
+                        //skip internalTypes
+                        AtlasEntityType entityType = context.getTypeRegistry().getEntityTypeByName(entityTypeName);
+                        if (entityType != null && entityType.isInternalType()) {
                             continue;
                         }
 
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 2d8a448..4648420 100644
--- a/repository/src/main/java/org/apache/atlas/discovery/FullTextSearchProcessor.java
+++ b/repository/src/main/java/org/apache/atlas/discovery/FullTextSearchProcessor.java
@@ -23,6 +23,7 @@ import org.apache.atlas.repository.Constants;
 import org.apache.atlas.repository.graphdb.AtlasIndexQuery;
 import org.apache.atlas.repository.graphdb.AtlasVertex;
 import org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2;
+import org.apache.atlas.type.AtlasEntityType;
 import org.apache.atlas.utils.AtlasPerfTracer;
 import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.Logger;
@@ -139,6 +140,13 @@ public class FullTextSearchProcessor extends SearchProcessor {
 
                         continue;
                     }
+                    //skip internalTypes
+                    String entityTypeName = AtlasGraphUtilsV2.getTypeName(vertex);
+                    AtlasEntityType entityType = context.getTypeRegistry().getEntityTypeByName(entityTypeName);
+                    if (entityType  != null && entityType.isInternalType()) {
+                        continue;
+                    }
+
 
                     if (activeOnly && AtlasGraphUtilsV2.getState(vertex) != AtlasEntity.Status.ACTIVE) {
                         continue;
diff --git a/repository/src/test/java/org/apache/atlas/discovery/FreeTextSearchProcessorTest.java b/repository/src/test/java/org/apache/atlas/discovery/FreeTextSearchProcessorTest.java
index e497bb7..d7825a0 100644
--- a/repository/src/test/java/org/apache/atlas/discovery/FreeTextSearchProcessorTest.java
+++ b/repository/src/test/java/org/apache/atlas/discovery/FreeTextSearchProcessorTest.java
@@ -26,7 +26,9 @@ import org.apache.atlas.model.discovery.SearchParameters;
 import org.apache.atlas.repository.graph.AtlasGraphProvider;
 import org.apache.atlas.repository.graphdb.AtlasGraph;
 import org.apache.atlas.repository.graphdb.AtlasVertex;
+import org.apache.atlas.repository.store.graph.v2.AtlasGraphUtilsV2;
 import org.apache.atlas.repository.store.graph.v2.EntityGraphRetriever;
+import org.apache.atlas.type.AtlasEntityType;
 import org.apache.atlas.type.AtlasTypeRegistry;
 import org.testng.annotations.AfterClass;
 import org.testng.annotations.BeforeClass;
@@ -38,6 +40,9 @@ import java.util.Collections;
 import java.util.List;
 
 import static org.testng.Assert.assertEquals;
+import static org.testng.Assert.assertNotEquals;
+import static org.testng.Assert.assertFalse;
+import static org.testng.Assert.assertNotNull;
 
 @Guice(modules = TestModules.TestOnlyModule.class)
 public class FreeTextSearchProcessorTest extends BasicTestSetup {
@@ -132,11 +137,35 @@ public class FreeTextSearchProcessorTest extends BasicTestSetup {
         new FreeTextSearchProcessor(context);
     }
 
+    @Test(description = "filtering internal types")
+    public void searchByTextFilteringInternalTypes() throws AtlasBaseException {
+        SearchParameters params = new SearchParameters();
+        params.setQuery("*");
+        params.setExcludeDeletedEntities(true);
+        params.setLimit(500);
+        params.setOffset(0);
+
+        SearchContext context = new SearchContext(params, typeRegistry, graph, Collections.<String>emptySet());
+
+        FreeTextSearchProcessor processor = new FreeTextSearchProcessor(context);
+
+        List<AtlasVertex> vertices = processor.execute();
+
+        assertNotNull(vertices);
+
+        for (AtlasVertex vertex : vertices) {
+            String entityTypeName = AtlasGraphUtilsV2.getTypeName(vertex);
+            AtlasEntityType entityType = context.getTypeRegistry().getEntityTypeByName(entityTypeName);
+
+            assertFalse(entityType.isInternalType());
+            assertNotEquals("AtlasGlossaryTerm", entityTypeName);
+        }
+    }
+
     @AfterClass
     public void teardown() throws Exception {
         AtlasGraphProvider.cleanup();
 
         super.cleanup();
     }
-
 }
\ No newline at end of file