mirror of
https://github.com/reddit-archive/reddit.git
synced 2026-02-01 02:05:03 -05:00
Try using new search for 'related' tab
This commit is contained in:
@@ -633,35 +633,36 @@ class FrontController(RedditController):
|
||||
"""The awards page."""
|
||||
return BoringPage(_("awards"), content = UserAwards()).render()
|
||||
|
||||
# filter for removing punctuation which could be interpreted as lucene syntax
|
||||
related_replace_regex = re.compile('[?\\&|!{}+~^()":*-]+')
|
||||
# filter for removing punctuation which could be interpreted as search syntax
|
||||
related_replace_regex = re.compile('[?\\&|!{}+~^()"\':*-]+')
|
||||
related_replace_with = ' '
|
||||
|
||||
@base_listing
|
||||
@validate(article = VLink('article'))
|
||||
def GET_related(self, num, article, after, reverse, count):
|
||||
"""Related page: performs a search using title of article as
|
||||
the search query."""
|
||||
|
||||
the search query.
|
||||
|
||||
"""
|
||||
if not can_view_link_comments(article):
|
||||
abort(403, 'forbidden')
|
||||
|
||||
title = c.site.name + ((': ' + article.title) if hasattr(article, 'title') else '')
|
||||
|
||||
query = self.related_replace_regex.sub(self.related_replace_with,
|
||||
article.title)
|
||||
if len(query) > 1024:
|
||||
# could get fancier and break this into words, but titles
|
||||
# longer than this are typically ascii art anyway
|
||||
query = query[0:1023]
|
||||
query = query[:1024]
|
||||
query = "|".join(query.split())
|
||||
query = "title:'%s'" % query
|
||||
rel_range = timedelta(days=3)
|
||||
start = (article._date - rel_range).strftime("%s")
|
||||
end = (article._date + rel_range).strftime("%s")
|
||||
query = "(and %s timestamp:%s..%s)" % (query, start, end)
|
||||
q = SearchQuery(query, raw_sort="-text_relevance",
|
||||
syntax="cloudsearch")
|
||||
num, t, pane = self._search(q, num=num, after=after, reverse=reverse,
|
||||
count=count)
|
||||
|
||||
q = RelatedSearchQuery(query, ignore = [article._fullname])
|
||||
num, t, pane = self._search(q,
|
||||
num = num, after = after, reverse = reverse,
|
||||
count = count)
|
||||
|
||||
return LinkInfoPage(link = article, content = pane,
|
||||
subtitle = _('related')).render()
|
||||
return LinkInfoPage(link=article, content=pane,
|
||||
subtitle=_('related')).render()
|
||||
|
||||
@base_listing
|
||||
@validate(article = VLink('article'))
|
||||
|
||||
@@ -529,7 +529,7 @@ basic_link = functools.partial(basic_query, facets=("reddit",), facet_count=10,
|
||||
basic_subreddit = functools.partial(basic_query,
|
||||
facets=(),
|
||||
size=10, start=0,
|
||||
rank="relevance",
|
||||
rank="-activity",
|
||||
return_fields=['title', 'reddit',
|
||||
'author_fullname'],
|
||||
record_stats=False,
|
||||
@@ -569,7 +569,7 @@ class CloudSearchQuery(object):
|
||||
default_syntax = "plain"
|
||||
lucene_parser = None
|
||||
|
||||
def __init__(self, query, sr=None, sort=None, syntax=None):
|
||||
def __init__(self, query, sr=None, sort=None, syntax=None, raw_sort=None):
|
||||
if syntax is None:
|
||||
syntax = self.default_syntax
|
||||
elif syntax not in self.known_syntaxes:
|
||||
@@ -579,7 +579,10 @@ class CloudSearchQuery(object):
|
||||
self.syntax = syntax
|
||||
self.sr = sr
|
||||
self._sort = sort
|
||||
self.sort = self.sorts[sort]
|
||||
if raw_sort:
|
||||
self.sort = raw_sort
|
||||
else:
|
||||
self.sort = self.sorts[sort]
|
||||
self.bq = ''
|
||||
self.results = None
|
||||
|
||||
@@ -764,8 +767,8 @@ class LinkSearchQuery(CloudSearchQuery):
|
||||
|
||||
class SubredditSearchQuery(CloudSearchQuery):
|
||||
search_api = g.CLOUDSEARCH_SUBREDDIT_SEARCH_API
|
||||
sorts = {'relevance': '-text_relevance',
|
||||
None: '-text_relevance',
|
||||
sorts = {'relevance': '-activity',
|
||||
None: '-activity',
|
||||
}
|
||||
sorts_menu_mapping = {'relevance': 1,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user