diff --git a/xapian_backend.py b/xapian_backend.py index 8de16ed..11a5c4a 100755 --- a/xapian_backend.py +++ b/xapian_backend.py @@ -921,6 +921,14 @@ class SearchQuery(BaseSearchQuery): super(SearchQuery, self).__init__(backend=backend) self.backend = backend or SearchBackend(site=site) + def build_params(self, *args, **kwargs): + kwargs = super(SearchQuery, self).build_params(*args, **kwargs) + + if self.end_offset is not None: + kwargs['end_offset'] = self.end_offset - self.start_offset + + return kwargs + def build_query(self): if not self.query_filter: query = xapian.Query('') @@ -1253,60 +1261,3 @@ def _marshal_datetime(dt): dt.year, dt.month, dt.day, dt.hour, dt.minute, dt.second ) - - -def run(self): - """ - Builds and executes the query. Returns a list of search results. - """ - final_query = self.build_query() - kwargs = { - 'start_offset': self.start_offset, - } - - if self.order_by: - kwargs['sort_by'] = self.order_by - - if self.end_offset is not None: - kwargs['end_offset'] = self.end_offset - self.start_offset - - if self.highlight: - kwargs['highlight'] = self.highlight - - if self.facets: - kwargs['facets'] = list(self.facets) - - if self.date_facets: - kwargs['date_facets'] = self.date_facets - - if self.query_facets: - kwargs['query_facets'] = self.query_facets - - if self.narrow_queries: - kwargs['narrow_queries'] = self.narrow_queries - - results = self.backend.search(final_query, **kwargs) - self._results = results.get('results', []) - self._hit_count = results.get('hits', 0) - self._facet_counts = results.get('facets', {}) - self._spelling_suggestion = results.get('spelling_suggestion', None) - - -def run_mlt(self): - """ - Builds and executes the query. Returns a list of search results. - """ - if self._more_like_this is False or self._mlt_instance is None: - raise MoreLikeThisError("No instance was provided to determine 'More Like This' results.") - - additional_query_string = self.build_query() - kwargs = { - 'start_offset': self.start_offset, - } - - if self.end_offset is not None: - kwargs['end_offset'] = self.end_offset - self.start_offset - - results = self.backend.more_like_this(self._mlt_instance, additional_query_string, **kwargs) - self._results = results.get('results', []) - self._hit_count = results.get('hits', 0)