diff --git a/config/solr/schema.xml b/config/solr/schema.xml index 4385ba006..ecd6c0a38 100644 --- a/config/solr/schema.xml +++ b/config/solr/schema.xml @@ -378,12 +378,13 @@ CondeNet, Inc. All Rights Reserved. - + - - + + - + + diff --git a/r2/r2/lib/solrsearch.py b/r2/r2/lib/solrsearch.py index b3034ecb2..2409c50b1 100644 --- a/r2/r2/lib/solrsearch.py +++ b/r2/r2/lib/solrsearch.py @@ -125,10 +125,9 @@ search_fields={Thing: (Field('fullname', '_fullname'), Field('lang'), Field('ups', '_ups', is_number=True, reverse=True), Field('downs', '_downs', is_number=True, reverse=True), - Field('hot', lambda t: int(t._hot*1000), - is_number=True, reverse=True), - Field('points', lambda t: str(t._ups - t._downs), - is_number=True, reverse=True)), + Field('hot', lambda t: t._hot*1000, is_number=True, reverse=True), + Field('controversy', '_controversy', is_number=True, reverse=True), + Field('points', lambda t: (t._ups - t._downs), is_number=True, reverse=True)), Subreddit: (Field('contents', lambda s: ' '.join([unicode_safe(s.name), unicode_safe(s.title), @@ -399,7 +398,7 @@ def reindex_all(types = None, delete_all_first=False): q.put(e,timeout=30) raise e -def changed(commit=True,optimize=False): +def changed(commit=True,optimize=False,delete_old=True): """ Run by `cron` (through `paster run`) on a schedule to update all Things that have been created or have changed since the @@ -432,7 +431,9 @@ def changed(commit=True,optimize=False): for i in to_delete: s.delete(id=i._fullname) - thing_changes.clear_changes(max_date = max_date) + + if delete_old: + thing_changes.clear_changes(max_date = max_date) def combine_searchterms(terms): """ @@ -487,9 +488,6 @@ def search_things(q, sort = 'hot desc', `num`. Queries on params are OR queries, except `timerange` and `types` """ - global searchable_langs - global indexed_types - if not q or not g.solr_url: return pysolr.Results([],0) @@ -587,7 +585,7 @@ def search_things(q, sort = 'hot desc', # qb = '3', bq = ' '.join(boost), qf = ' '.join(fields), - mm = '50%') # minimum number of clauses that should match + mm = '75%') # minimum number of clauses that should match with SolrConnection() as s: if after: @@ -620,13 +618,12 @@ def search_things(q, sort = 'hot desc', pre_search.hits) fullname = after._fullname - found_it = False for i, item in enumerate(search.docs): if item['fullname'] == fullname: - found_it = True search.docs = search.docs[i+1:i+1+num] break - if not found_it: + else: + g.log.debug("I got an after query, but the fullname was not present in the results") search.docs = search.docs[0:num] else: search = s.search(q,sort,rows=num, diff --git a/r2/r2/lib/utils/utils.py b/r2/r2/lib/utils/utils.py index 9e2805b3c..7920ee06c 100644 --- a/r2/r2/lib/utils/utils.py +++ b/r2/r2/lib/utils/utils.py @@ -998,3 +998,10 @@ def title_to_url(title, max_length = 50): title = title[:last_word] return title +def debug_print(fn): + def new_fn(*k,**kw): + ret = fn(*k,**kw) + g.log.debug("Fn: %s; k=%s; kw=%s\nRet: %s" + % (fn,k,kw,ret)) + return ret + return new_fn diff --git a/r2/r2/models/builder.py b/r2/r2/models/builder.py index 3759b7a59..2368331c8 100644 --- a/r2/r2/models/builder.py +++ b/r2/r2/models/builder.py @@ -258,7 +258,7 @@ class QueryBuilder(Builder): #log loop self.loopcount += 1 if self.loopcount == 20: - print 'BREAKING', self + g.log.debug('BREAKING: %s' % self) done = True #no results, we're done @@ -410,8 +410,8 @@ class SearchBuilder(QueryBuilder): else: timerange = None - new_items = solrsearch.search_things(self.query or '', sort = self.sort, - after = self.after, + new_items = solrsearch.search_things(q = self.query or '', sort = self.sort, + after = last_item, subreddits = self.subreddits, authors = self.authors, num = limit, reverse = self.reverse,