Try using new search for 'related' tab

This commit is contained in:
Keith Mitchell
2012-04-11 16:05:14 -07:00
parent a8d55dd77a
commit 3b1ef62c85
2 changed files with 26 additions and 22 deletions

View File

@@ -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'))

View File

@@ -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,
}