diff --git a/tests/xapian_tests/tests/xapian_backend.py b/tests/xapian_tests/tests/xapian_backend.py index fb6893f..8f6f939 100644 --- a/tests/xapian_tests/tests/xapian_backend.py +++ b/tests/xapian_tests/tests/xapian_backend.py @@ -264,19 +264,18 @@ class XapianSearchBackendTestCase(TestCase): self.assertEqual(self.sb.search(xapian.Query('XNAMEdavid'))['hits'], 0) self.assertEqual(self.sb.search(xapian.Query('XNAMEdavid'))['spelling_suggestion'], 'david1') - - # def test_more_like_this(self): - # self.sb.update(self.msi, self.sample_objs) - # self.assertEqual(len(self.xapian_search('')), 3) - # - # results = self.sb.more_like_this(self.sample_objs[0]) - # self.assertEqual(results['hits'], 2) - # self.assertEqual([result.pk for result in results['results']], [3, 2]) - # - # results = self.sb.more_like_this(self.sample_objs[0], additional_query_string='david3') - # self.assertEqual(results['hits'], 1) - # self.assertEqual([result.pk for result in results['results']], [3]) + def test_more_like_this(self): + self.sb.update(self.msi, self.sample_objs) + self.assertEqual(len(self.xapian_search('')), 3) + + results = self.sb.more_like_this(self.sample_objs[0]) + self.assertEqual(results['hits'], 2) + self.assertEqual([result.pk for result in results['results']], [3, 2]) + + results = self.sb.more_like_this(self.sample_objs[0], additional_query=xapian.Query('david3')) + self.assertEqual(results['hits'], 1) + self.assertEqual([result.pk for result in results['results']], [3]) # def test_order_by(self): # self.sb.update(self.msi, self.sample_objs) diff --git a/xapian_backend.py b/xapian_backend.py index 31963bf..c646428 100755 --- a/xapian_backend.py +++ b/xapian_backend.py @@ -325,7 +325,7 @@ class SearchBackend(BaseSearchBackend): 'spelling_suggestion': spelling_suggestion, } - def more_like_this(self, model_instance, additional_query_string=None, + def more_like_this(self, model_instance, additional_query=None, start_offset=0, end_offset=None, limit_to_registered_models=True, **kwargs): """ @@ -336,8 +336,7 @@ class SearchBackend(BaseSearchBackend): retrieving similar documents. Optional arguments: - `additional_query_string` -- An additional query string to narrow - results + `additional_query` -- An additional query to narrow results `start_offset` -- The starting offset (default=0) `end_offset` -- The ending offset (default=None), if None, then all documents `limit_to_registered_models` -- Limit returned results to models registered in the current `SearchSite` (default = True) @@ -379,19 +378,16 @@ class SearchBackend(BaseSearchBackend): query = xapian.Query( xapian.Query.OP_AND_NOT, [query, DOCUMENT_ID_TERM_PREFIX + get_identifier(model_instance)] ) - narrow_queries = None - if limit_to_registered_models: - registered_models = self.build_registered_models_list() - - if len(registered_models) > 0: - narrow_queries = set() - narrow_queries.add( - ' '.join(['django_ct:%s' % model for model in registered_models]) - ) - if additional_query_string: - additional_query, __unused__ = self._query( - database, additional_query_string, narrow_queries - ) + # narrow_queries = None + # if limit_to_registered_models: + # registered_models = self.build_registered_models_list() + # + # if len(registered_models) > 0: + # narrow_queries = set() + # narrow_queries.add( + # ' '.join(['django_ct:%s' % model for model in registered_models]) + # ) + if additional_query: query = xapian.Query( xapian.Query.OP_AND, query, additional_query )