X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/ddaff853c515ef7d188523d9ef17d271901dd581..d157af1061e9f03f59ea909d7d25f4a0b41f1c0e:/apps/search/custom.py?ds=sidebyside diff --git a/apps/search/custom.py b/apps/search/custom.py index 6c16f228f..86d387e02 100644 --- a/apps/search/custom.py +++ b/apps/search/custom.py @@ -5,7 +5,7 @@ import urllib import warnings from sunburnt import search import copy - +from httplib2 import socket class TermVectorOptions(search.Options): def __init__(self, schema, original=None): @@ -89,7 +89,11 @@ class CustomSolrInterface(sunburnt.SolrInterface): self.writeable = False elif 'r' not in mode: self.readable = False - self.init_schema() + try: + self.init_schema() + except socket.error, e: + raise socket.error, "Cannot connect to Solr server, and search indexing is enabled (%s)" % str(e) + def _analyze(self, **kwargs): if not self.readable: @@ -134,18 +138,22 @@ class CustomSolrInterface(sunburnt.SolrInterface): start = None end = None totlen = len(text) - matches_margins = map(lambda (s, e): (max(0, s - margins), min(totlen, e + margins)), matches) - (start, end) = matches_margins[0] - - for (s, e) in matches_margins[1:]: + matches_margins = map(lambda (s, e): + ((s, e), + (max(0, s - margins), min(totlen, e + margins))), + matches) + (start, end) = matches_margins[0][1] + matches = [] + for (m, (s, e)) in matches_margins[1:]: if end < s or start > e: continue start = min(start, s) end = max(end, e) - + matches.append(m) + snip = text[start:end] - matches = list(matches) matches.sort(lambda a, b: cmp(b[0], a[0])) + for (s, e) in matches: off = - start snip = snip[:e + off] + mark[1] + snip[e + off:]