mirror of
https://github.com/reddit-archive/reddit.git
synced 2026-01-14 17:38:04 -05:00
Search: Test new relevance2 relevancy
Use relevance2 relevancy when the link_relevancy feature flag is enabled. The new relevancy requires bypassing the l2cs query parser when possible so that field weights will be properly applied. This also results in a simplified search query.
This commit is contained in:
@@ -1034,6 +1034,9 @@ class FrontController(RedditController):
|
||||
else:
|
||||
sr_num = 0
|
||||
|
||||
if feature.is_enabled('link_relevancy') and sort == 'relevance':
|
||||
sort = 'relevance2'
|
||||
|
||||
content = None
|
||||
subreddits = None
|
||||
nav_menus = None
|
||||
|
||||
@@ -547,7 +547,7 @@ class CloudSearchQuery(object):
|
||||
|
||||
def __init__(self, query, sr=None, sort=None, syntax=None, raw_sort=None,
|
||||
faceting=None, recent=None, include_over18=True,
|
||||
rank_expressions=None, start=0, num=1000):
|
||||
rank_expressions=None, bypass_l2cs=False, start=0, num=1000):
|
||||
if syntax is None:
|
||||
syntax = self.default_syntax
|
||||
elif syntax not in self.known_syntaxes:
|
||||
@@ -574,6 +574,7 @@ class CloudSearchQuery(object):
|
||||
else:
|
||||
self.sort = self.sorts.get(sort)
|
||||
self.rank_expressions = rank_expressions
|
||||
self.bypass_l2cs = bypass_l2cs
|
||||
|
||||
# pagination
|
||||
self.start = start
|
||||
@@ -595,9 +596,18 @@ class CloudSearchQuery(object):
|
||||
if self.syntax == "cloudsearch":
|
||||
self.bq = self.customize_query(query)
|
||||
elif self.syntax == "lucene":
|
||||
bq = l2cs.convert(query, self.lucene_parser)
|
||||
self.converted_data = {"syntax": "cloudsearch", "converted": bq}
|
||||
self.bq = self.customize_query(bq)
|
||||
# For the most part, conversion to cloudsearch structured query syntax
|
||||
# is not needed, except for fielded searches using ":" and boolean
|
||||
# searches using AND/OR/NOT (in order to avoid transforming the query)
|
||||
lucene_operators = (':', ' AND ', ' OR ', ' NOT ')
|
||||
if (self.bypass_l2cs
|
||||
and not any(op in query for op in lucene_operators)):
|
||||
self.q = query.encode('utf-8')
|
||||
self.bq = self.customize_query()
|
||||
else:
|
||||
bq = l2cs.convert(query, self.lucene_parser)
|
||||
self.converted_data = {"syntax": "cloudsearch", "converted": bq}
|
||||
self.bq = self.customize_query(bq)
|
||||
elif self.syntax == "plain":
|
||||
self.q = query.encode('utf-8')
|
||||
self.bq = self.customize_query()
|
||||
@@ -712,6 +722,7 @@ class LinkSearchQuery(CloudSearchQuery):
|
||||
search_api = g.CLOUDSEARCH_SEARCH_API
|
||||
sorts = {
|
||||
'relevance': '-relevance',
|
||||
'relevance2': '-relevance2',
|
||||
'hot': '-hot2',
|
||||
'top': '-top',
|
||||
'new': '-timestamp',
|
||||
@@ -734,6 +745,12 @@ class LinkSearchQuery(CloudSearchQuery):
|
||||
known_syntaxes = g.search_syntaxes
|
||||
default_syntax = "lucene"
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
if kwargs.get('sort') == 'relevance2':
|
||||
kwargs['bypass_l2cs'] = True
|
||||
kwargs['raw_sort'] = '-relevance2'
|
||||
super(LinkSearchQuery, self).__init__(*args, **kwargs)
|
||||
|
||||
def customize_query(self, bq=u''):
|
||||
queries = []
|
||||
if bq:
|
||||
|
||||
Reference in New Issue
Block a user