def POST(self): errortext = None out = [] i = web.input(q = None, rows = 20, offset = 0, _unicode=False ) class Result_nums: pass nums = Result_nums() timings = Timestamp() nums.offset = int(i.get('offset', '0') or 0) nums.rows = int(i.get('rows', '0') or 20) nums.total_nbr = 0 q = i.q if not q: errortext='you need to enter some search terms' return render.fullsearch(q, out, nums, [], # timings errortext=errortext) try: q = re.sub('[\r\n]+', ' ', q).strip() nums.total_nbr, results = \ solr_fulltext.fulltext_search(q, start=nums.offset, rows=nums.rows) timings.update('fulltext done') t_ocaid = 0.0 for ocaid in results: try: pts = solr_pagetext.pagetext_search(ocaid, q) t_temp = time.time() oln_thing = lookup_ocaid(ocaid) t_ocaid += time.time() - t_temp if oln_thing is None: # print >> web.debug, 'No oln_thing found for', ocaid pass else: out.append((oln_thing, ocaid, collapse_groups(solr_pagetext.pagetext_search (ocaid, q)))) except IndexError as e: print(('fullsearch index error', e, e.args), file=web.debug) pass timings.update('pagetext done (oca lookups: %.4f sec)'% t_ocaid) except IOError as e: errortext = 'fulltext search is temporarily unavailable (%s)' % \ str(e) return render.fullsearch(q, out, nums, timings.results(), errortext=errortext)