X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/8b808f24709efb16f6b6eff6abb05b41341573c7..46a90d7cfe54bb6df2f99175abd0ad7d26b3da72:/apps/search/custom.py diff --git a/apps/search/custom.py b/apps/search/custom.py index fcc3bace2..6c16f228f 100644 --- a/apps/search/custom.py +++ b/apps/search/custom.py @@ -8,8 +8,6 @@ import copy class TermVectorOptions(search.Options): - option_name = "tv" - def __init__(self, schema, original=None): self.schema = schema if original is None: @@ -30,7 +28,8 @@ class TermVectorOptions(search.Options): def options(self): opts = {} - opts['tv'] = 'true' + if self.positions or self.fields: + opts['tv'] = 'true' if self.positions: opts['tv.positions'] = 'true' if self.fields: @@ -72,12 +71,12 @@ def __term_vector(self, positions=False, fields=None): newself.term_vectorer.update(positions, fields) return newself setattr(search.SolrSearch, 'term_vector', __term_vector) -__original__init_common_modules = search.SolrSearch._init_common_modules def __patched__init_common_modules(self): __original__init_common_modules(self) self.term_vectorer = TermVectorOptions(self.schema) +__original__init_common_modules = search.SolrSearch._init_common_modules setattr(search.SolrSearch, '_init_common_modules', __patched__init_common_modules) @@ -86,9 +85,9 @@ class CustomSolrInterface(sunburnt.SolrInterface): def __init__(self, url, schemadoc=None, http_connection=None, mode='', retry_timeout=-1, max_length_get_url=sunburnt.MAX_LENGTH_GET_URL): self.conn = CustomSolrConnection(url, http_connection, retry_timeout, max_length_get_url) self.schemadoc = schemadoc - if mode == 'r': + if 'w' not in mode: self.writeable = False - elif mode == 'w': + elif 'r' not in mode: self.readable = False self.init_schema() @@ -118,17 +117,16 @@ class CustomSolrInterface(sunburnt.SolrInterface): end = int(wrd.xpath("int[@name='end']")[0].text) matches.add((start, end)) - print matches if matches: return self.substring(kwargs['text'], matches, - margins=kwargs.get('margins', 30), - mark=kwargs.get('mark', ("", ""))) + margins=kwargs.get('margins', 30), + mark=kwargs.get('mark', ("", ""))) else: return None def analyze(self, **kwargs): - doc = self._analyze(self, **kwargs) - terms = doc.xpath("/lst[@name='index']/arr[last()]/lst/str[1]") + doc = self._analyze(**kwargs) + terms = doc.xpath("//lst[@name='index']/arr[last()]/lst/str[1]") terms = map(lambda n: unicode(n.text), terms) return terms @@ -153,4 +151,6 @@ class CustomSolrInterface(sunburnt.SolrInterface): snip = snip[:e + off] + mark[1] + snip[e + off:] snip = snip[:s + off] + mark[0] + snip[s + off:] # maybe break on word boundaries + return snip +