code: def listing_searchable_text(instance):
      
      entries = set()
      catalog = api.get_tool(CATALOG_ANALYSIS_REQUEST_LISTING)
      columns = catalog.schema()
      brains = catalog({"UID": api.get_uid(instance)})
      brain = brains[0] if brains else None
      for column in columns:
          brain_value = api.safe_getattr(brain, column, None)
          instance_value = api.safe_getattr(instance, column, None)
          parsed = api.to_searchable_text_metadata(brain_value or instance_value)
          entries.add(parsed)
  
      # add metadata of all descendants
      for descendant in instance.getDescendants():
          entries.add(listing_searchable_text(descendant)())
  
      # Concatenate all strings to one text blob
      return " ".join(entries)
docs: Retrieves all the values of metadata columns in the catalog for
      wildcard searches
      :return: all metadata values joined in a string