From b930cf4cfd2c8b0700a6323e0357e2713277e6d3 Mon Sep 17 00:00:00 2001
From: ale <ale@incal.net>
Date: Sat, 19 Nov 2011 11:32:26 +0000
Subject: [PATCH] catch and report SOLR errors

---
 server/djrandom/frontend/search.py | 20 ++++++++++++++------
 1 file changed, 14 insertions(+), 6 deletions(-)

diff --git a/server/djrandom/frontend/search.py b/server/djrandom/frontend/search.py
index 28f6219..8d45752 100644
--- a/server/djrandom/frontend/search.py
+++ b/server/djrandom/frontend/search.py
@@ -8,17 +8,25 @@ class Searcher(object):
         self.solr = solr.Solr(solr_url, timeout=30)
 
     def search(self, qstr, n=10, partial=False):
-        results = self.solr.select(q=qstr, sort='score desc',
-                                   fields='score,id', start=0, rows=n)
+        try:
+            results = self.solr.select(q=qstr, sort='score desc',
+                                       fields='score,id', start=0, rows=n)
+        except solr.SolrException, e:
+            log.error('SOLR exception (query="%s"): %s' % (
+                qstr, e))
         for doc in results.results:
             yield doc['score'], doc['id']
 
     def more_like_these(self, hashes, n=5):
         """Return a set of hashes that are related to the ones provided."""
-        query_str = ' OR '.join('(id:%s)' % x for x in hashes)
-        results = self.solr.select(
-            q=query_str, fields='score,id', rows=n,
-            mlt='true', mlt_fl='text', mlt_mindf=1, mlt_mintf=1)
+        query_str = ' OR '.join('(id:%s)' % x for x in hashes if x)
+        try:
+            results = self.solr.select(
+                q=query_str, fields='score,id', rows=n,
+                mlt='true', mlt_fl='text', mlt_mindf=1, mlt_mintf=1)
+        except solr.SolrException, e:
+            log.error('SOLR exception (query="%s"): %s' % (
+                query_str, e))
 
         # Parse and uniq-ify the results.
         hashes_set = set(hashes)
-- 
GitLab