Преглед изворни кода

HUE-5051 [metadata] Facet autocomplete should apply previous query filters

Romain Rigaux пре 9 година
родитељ
комит
439a524

+ 1 - 1
desktop/core/src/desktop/templates/assist.mako

@@ -1433,7 +1433,7 @@ from metadata.conf import has_navigator
           self.apiHelper.navSearchAutocomplete({
           self.apiHelper.navSearchAutocomplete({
             source: self.visiblePanel().type === 'sql' ?
             source: self.visiblePanel().type === 'sql' ?
                 (self.visiblePanel().panelData.selectedSource() ? self.visiblePanel().panelData.selectedSource().sourceType : 'hive') : self.visiblePanel().type,
                 (self.visiblePanel().panelData.selectedSource() ? self.visiblePanel().panelData.selectedSource().sourceType : 'hive') : self.visiblePanel().type,
-            query:  partial + '*',
+            query:  request.term + '*',
             successCallback: function (data) {
             successCallback: function (data) {
               var values = [];
               var values = [];
               if (isFacet && typeof data.facets !== 'undefined') {
               if (isFacet && typeof data.facets !== 'undefined') {

+ 6 - 0
desktop/libs/metadata/src/metadata/navigator_api.py

@@ -62,6 +62,9 @@ def error_handler(view_fn):
 
 
 @error_handler
 @error_handler
 def search_entities(request):
 def search_entities(request):
+  """
+  For displaying results.
+  """
   api = NavigatorApi()
   api = NavigatorApi()
 
 
   query_s = request.POST.get('query_s', '')
   query_s = request.POST.get('query_s', '')
@@ -87,6 +90,9 @@ def search_entities(request):
 
 
 @error_handler
 @error_handler
 def search_entities_interactive(request):
 def search_entities_interactive(request):
+  """
+  For search autocomplete.
+  """  
   api = NavigatorApi()
   api = NavigatorApi()
 
 
   query_s = request.POST.get('query_s', '')
   query_s = request.POST.get('query_s', '')

+ 10 - 7
desktop/libs/metadata/src/metadata/navigator_client.py

@@ -78,7 +78,7 @@ class NavigatorApi(object):
 
 
     sources = filters.get('sources', [])
     sources = filters.get('sources', [])
 
 
-    if 'hive' in sources or 'impala' in sources:
+    if 'sql' in sources:
       default_entity_types = ('TABLE', 'VIEW')
       default_entity_types = ('TABLE', 'VIEW')
       entity_types = ('TABLE', 'VIEW', 'DATABASE', 'PARTITION', 'FIELD')
       entity_types = ('TABLE', 'VIEW', 'DATABASE', 'PARTITION', 'FIELD')
     elif 'hdfs' in sources:
     elif 'hdfs' in sources:
@@ -105,11 +105,10 @@ class NavigatorApi(object):
       if query_clauses:
       if query_clauses:
         filter_query = 'OR'.join(['(%s)' % clause for clause in query_clauses])
         filter_query = 'OR'.join(['(%s)' % clause for clause in query_clauses])
 
 
-      if user_filters:
-        type_filter_clause = 'OR '.join(['(%s)' % f for f in user_filters])
-      else:
-        type_filter_clause = 'OR'.join(['(%s:%s)' % ('type', entity_type) for entity_type in default_entity_types])
-      filter_query = '%s AND (%s)' % (filter_query, type_filter_clause)
+      user_filter_clause = 'OR '.join(['(%s)' % f for f in user_filters]) or '*'
+      source_filter_clause = 'OR'.join(['(%s:%s)' % ('type', entity_type) for entity_type in default_entity_types])
+
+      filter_query = '%s AND (%s) AND (%s)' % (filter_query, user_filter_clause, source_filter_clause)
 
 
       params += (
       params += (
         ('query', filter_query),
         ('query', filter_query),
@@ -135,8 +134,12 @@ class NavigatorApi(object):
       }
       }
 
 
       body = {'query': query and query.strip() or '*'}
       body = {'query': query and query.strip() or '*'}
+      
+      # TODO
+      # Add default source filters
+      # Remove empty filters like 'tag:*'
 
 
-      body['facetFields'] = facetFields or [] # Currently mandatory
+      body['facetFields'] = facetFields or [] # Currently mandatory in API
       if facetPrefix:
       if facetPrefix:
         body['facetPrefix'] = facetPrefix
         body['facetPrefix'] = facetPrefix
       if facetRanges:
       if facetRanges:

+ 1 - 0
desktop/libs/metadata/src/metadata/navigator_client_tests.py

@@ -64,3 +64,4 @@ class TestNavigatorclient:
     # ca es
     # ca es
     # "ca es"
     # "ca es"
     # ca OR es
     # ca OR es
+    # tags:a