def search_model_catalog(self, query, start=0, limit=None, order_by=None, reverse=False, fields=None, commit_dirty=False, facets_for_field=None): """ @returns: SearchResults """ catalog_results = [] brains = [] count = 0 search_params = SearchParams(query, start=start, limit=limit, order_by=order_by, reverse=reverse, fields=fields) if facets_for_field: search_params.facet_field = facets_for_field catalog_results = self.model_catalog_client.search( search_params, self.context, commit_dirty=commit_dirty) return catalog_results
def search_model_catalog(self, query, start=0, limit=None, order_by=None, reverse=False, fields=None, commit_dirty=False, facets_for_field=None): """ @returns: SearchResults """ catalog_results = [] brains = [] count = 0 search_params = SearchParams(query, start=start, limit=limit, order_by=order_by, reverse=reverse, fields=fields) if facets_for_field: search_params.facet_field=facets_for_field catalog_results = self.model_catalog_client.search(search_params, self.context, commit_dirty=commit_dirty) return catalog_results
def reset_model_catalog(): """ Deletes temporary documents from previous tests. They should be cleaned by abort() but just in case """ model_index = zope.component.createObject('ModelIndex', get_solr_config(test=True)) model_index.unindex_search(SearchParams(query="NOT tx_state:0"))
def get_uids(index_client, root="", types=()): start = 0 need_results = True query = [Eq("tx_state", 0)] if root: root = root.rstrip('/') query.append( Or(Eq("uid", "{}".format(root)), MatchGlob("uid", "{}/*".format(root)))) if not isinstance(types, (tuple, list)): types = (types, ) if types: query.append(In("objectImplements", [dottedname(t) for t in types])) while need_results: search_results = index_client.search( SearchParams(query=And(*query), start=start, limit=MODEL_INDEX_BATCH_SIZE, order_by="uid", fields=["uid"])) start += MODEL_INDEX_BATCH_SIZE for result in search_results.results: yield result.uid need_results = start < search_results.total_count
def search_brain(self, uid, context, fields=None, commit_dirty=False): """ """ tx_state = self._get_tx_state() if commit_dirty: self.do_mid_transaction_commit() query = Eq(OBJECT_UID_FIELD, uid) search_params = SearchParams(query, fields=fields) search_params = self._add_tx_state_query(search_params, tx_state) return self._do_search(search_params, context)
def _delete_temporary_tx_documents(self): tx_state = self._get_tx_state() if tx_state and tx_state.are_there_indexed_updates(): try: query = {TX_STATE_FIELD:tx_state.tid} self.model_index.unindex_search(SearchParams(query)) except Exception as e: log.fatal("Exception trying to abort current transaction. {0} / {1}".format(e, e.message)) raise ModelCatalogError("Model Catalog error trying to abort transaction")
def unindex_by_uid(self, uid): query = {UID: uid} search_params = SearchParams(query=query) self.model_index.unindex_search( search_params, collection=ZENOSS_MODEL_COLLECTION_NAME)