Added term boosting
This commit is contained in:
parent
e9f2064454
commit
3cacb54cf5
|
@ -76,11 +76,11 @@ class XapianSearchQueryTestCase(TestCase):
|
|||
self.sq.add_filter(SQ(content='hello world'))
|
||||
self.assertEqual(self.sq.build_query().get_description(), 'Xapian::Query(hello world)')
|
||||
|
||||
# def test_build_query_boost(self):
|
||||
# self.sq.add_filter(SQ(content='hello'))
|
||||
# self.sq.add_boost('world', 5)
|
||||
# self.assertEqual(self.sq.build_query().get_description(), 'Xapian::Query(hello world)')
|
||||
#
|
||||
def test_build_query_boost(self):
|
||||
self.sq.add_filter(SQ(content='hello'))
|
||||
self.sq.add_boost('world', 5)
|
||||
self.assertEqual(self.sq.build_query().get_description(), 'Xapian::Query((hello OR 5 * world))')
|
||||
|
||||
# def test_build_query_multiple_filter_types(self):
|
||||
# self.sq.add_filter('content', 'why')
|
||||
# self.sq.add_filter('pub_date__lte', datetime.datetime(2009, 2, 10, 1, 59))
|
||||
|
|
|
@ -911,9 +911,22 @@ class SearchQuery(BaseSearchQuery):
|
|||
|
||||
def build_query(self):
|
||||
if not self.query_filter:
|
||||
return xapian.Query('')
|
||||
query = xapian.Query('')
|
||||
else:
|
||||
return self._query_from_search_node(self.query_filter)
|
||||
query = self._query_from_search_node(self.query_filter)
|
||||
|
||||
if self.boost:
|
||||
subqueries = [
|
||||
xapian.Query(
|
||||
xapian.Query.OP_SCALE_WEIGHT, xapian.Query(term), value
|
||||
) for term, value in self.boost.iteritems()
|
||||
]
|
||||
query = xapian.Query(
|
||||
xapian.Query.OP_OR, query,
|
||||
xapian.Query(xapian.Query.OP_AND, subqueries)
|
||||
)
|
||||
|
||||
return query
|
||||
|
||||
def _query_from_search_node(self, search_node, is_not=False):
|
||||
query_list = []
|
||||
|
|
Loading…
Reference in New Issue