From 132e13e66688cb20ae02db163a1ec89a3124f70a Mon Sep 17 00:00:00 2001 From: David Sauve Date: Tue, 10 Nov 2009 21:45:49 -0500 Subject: [PATCH] Five tests. OR operator now working --- tests/xapian_tests/tests/xapian_query.py | 9 ++++----- xapian_backend.py | 9 +++++++-- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/tests/xapian_tests/tests/xapian_query.py b/tests/xapian_tests/tests/xapian_query.py index 54d4e57..db6e7b0 100644 --- a/tests/xapian_tests/tests/xapian_query.py +++ b/tests/xapian_tests/tests/xapian_query.py @@ -66,11 +66,10 @@ class XapianSearchQueryTestCase(TestCase): self.sq.add_filter(~SQ(content='world')) self.assertEqual(self.sq.build_query().get_description(), 'Xapian::Query((( AND_NOT hello) AND ( AND_NOT world)))') - # def test_build_query_multiple_words_or(self): - # self.sq.add_filter('content', 'hello', use_or=True) - # self.sq.add_filter('content', 'world', use_or=True) - # self.assertEqual(self.sq.build_query(), 'hello OR world') - # + def test_build_query_multiple_words_or(self): + self.sq.add_filter(SQ(content='hello') | SQ(content='world')) + self.assertEqual(self.sq.build_query().get_description(), 'Xapian::Query((hello OR world))') + # def test_build_query_multiple_words_mixed(self): # self.sq.add_filter('content', 'why') # self.sq.add_filter('content', 'hello', use_or=True) diff --git a/xapian_backend.py b/xapian_backend.py index 6585225..f87bd70 100755 --- a/xapian_backend.py +++ b/xapian_backend.py @@ -948,7 +948,9 @@ class SearchQuery(BaseSearchQuery): query_list.append( xapian.Query( xapian.Query.OP_AND, - self._query_from_search_node(child, child.negated) + self._query_from_search_node( + child, child.negated + ) ) ) else: @@ -959,7 +961,10 @@ class SearchQuery(BaseSearchQuery): else: query_list.append(xapian.Query(value)) - return xapian.Query(xapian.Query.OP_AND, query_list) + if search_node.connector == 'OR': + return xapian.Query(xapian.Query.OP_OR, query_list) + else: + return xapian.Query(xapian.Query.OP_AND, query_list) def build_sub_query(self, value): return xapian.Query(value)