def _get_frequency_of(self, elements: IResultSet, query: SearchQuery) -> dict: frequency_of = {} if query.frequency_of: index = self.get_index(query.frequency_of) for value in index.unique_values(): value_query = index.eq(value) value_elements = value_query.execute(resolver=None) intersect = elements.intersect(value_elements) count = len(intersect) if count == 0: continue frequency_of[value] = count return frequency_of
def _get_group_by(self, elements: IResultSet, query: SearchQuery) -> dict: group_by = {} if query.group_by: index = self.get_index(query.group_by) for value in index.unique_values(): value_query = index.eq(value) value_elements = value_query.execute(resolver=None) intersect = elements.intersect(value_elements) if len(intersect) == 0: continue group_by[value] = intersect sort_index = self.get_index(query.sort_by) if sort_index is not None and query.sort_by != "reference": for key, intersect in group_by.items(): intersect_sorted = intersect.sort(sort_index, reverse=query.reverse, limit=query.limit or None) group_by[key] = intersect_sorted for key, intersect in group_by.items(): group_by[key] = self._resolve(intersect.all(), query) return group_by
def _get_group_by(self, elements: IResultSet, query: SearchQuery) -> dict: group_by = {} if query.group_by: index = self.get_index(query.group_by) for value in index.unique_values(): value_query = index.eq(value) value_elements = value_query.execute(resolver=None) intersect = elements.intersect(value_elements) if len(intersect) == 0: continue group_by[value] = intersect sort_index = self.get_index(query.sort_by) if sort_index is not None and query.sort_by != 'reference': for key, intersect in group_by.items(): intersect_sorted = intersect.sort(sort_index, reverse=query.reverse, limit=query.limit or None) group_by[key] = intersect_sorted for key, intersect in group_by.items(): group_by[key] = self._resolve(intersect.all(), query) return group_by