瀏覽代碼

HUE-8095 [metadata] Fix entity boosting that was triggering too many matches

Romain Rigaux 7 年之前
父節點
當前提交
023af21c07

+ 4 - 4
desktop/libs/metadata/src/metadata/navigator_client.py

@@ -505,11 +505,11 @@ class NavigatorApi(object):
 
 
   def _get_boosted_term(self, term):
-    return 'OR'.join(
-      ['(%s:*%s*^%s)' % (field, term, weight) for (field, weight) in NavigatorApi.DEFAULT_SEARCH_FIELDS] + # Matching fields
-      ['(%s:[* TO *])' % field for (field, weight) in NavigatorApi.DEFAULT_SEARCH_FIELDS] # Important fields that are not null
+    return 'AND'.join([
+      '(%s)' % 'OR'.join(['(%s:*%s*^%s)' % (field, term, weight) for (field, weight) in NavigatorApi.DEFAULT_SEARCH_FIELDS]),  # Matching fields
+      '(%s)' % 'OR'.join(['(%s:[* TO *])' % field for (field, weight) in NavigatorApi.DEFAULT_SEARCH_FIELDS]) # Boost entities with enriched fields
       # Could add certain customProperties and properties
-    )
+    ])
 
   def _clean_path(self, path):
     return path.rstrip('/').split('/')[-1], self._escape_slashes(path.rstrip('/'))

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

@@ -173,7 +173,7 @@ class TestNavigatorClient(NavigatorClientTest):
       cluster_filter = '%s'
 
     assert_equal(
-        cluster_filter % '((originalName:*cases*^3)OR(originalDescription:*cases*^1)OR(name:*cases*^10)OR(description:*cases*^3)OR(tags:*cases*^5)OR(originalName:[* TO *])OR(originalDescription:[* TO *])OR(name:[* TO *])OR(description:[* TO *])OR(tags:[* TO *])) AND (*) AND ((type:TABLE)OR(type:VIEW)) AND (sourceType:HIVE OR sourceType:IMPALA)',
+        cluster_filter % '(((originalName:*cases*^3)OR(originalDescription:*cases*^1)OR(name:*cases*^10)OR(description:*cases*^3)OR(tags:*cases*^5))AND((originalName:[* TO *])OR(originalDescription:[* TO *])OR(name:[* TO *])OR(description:[* TO *])OR(tags:[* TO *]))) AND (*) AND ((type:TABLE)OR(type:VIEW)) AND (sourceType:HIVE OR sourceType:IMPALA)',
         self.api.search_entities(query_s='cases', sources=['hive'])[0][1]
     )