def keyword_results(self, query=None, batch=True, b_size=10, b_start=0): '''Returns the result of a keywor query. The current accepted keywords are: user: An ORed list of words that should appear in the user info. type: An ORed list of content types. ''' searchable_text = self.get_searchable_text(query) key, val = searchutil._key_and_val_from_searchable_text(searchable_text) if key == 'type': return self.type_results(query, batch, b_size, b_start, val) elif key == 'user': return self.user_results(query, batch, b_size, b_start, val) else: return []
def get_query(query): searchable_text = query.get("SearchableText", "") key, val = searchutil._key_and_val_from_searchable_text(searchable_text) if key is None or key not in searchutil.SEARCH_KEYS: return query portal_type = query.get("portal_type", []) if key == "type": types = searchutil._types_from_type_string(val) portal_type = [x for x in portal_type if x in types] query["portal_type"] = portal_type del (query["SearchableText"]) elif key == "user": user_ids = searchutil._user_ids_from_users_string(val) query["Creator"] = user_ids del (query["SearchableText"]) return query