comparison zopeSolr.py @ 7:3cb69c6820bd

bug in query fixed for limits
author dwinter
date Tue, 28 May 2013 15:48:29 +0200
parents c97b5cbcda52
children a8f16569d1a6
comparison
equal deleted inserted replaced
6:c97b5cbcda52 7:3cb69c6820bd
241 # http://opensource.timetric.com/sunburnt/queryingsolr.html#highlighting 241 # http://opensource.timetric.com/sunburnt/queryingsolr.html#highlighting
242 # und http://opensource.timetric.com/sunburnt/queryingsolr.html#faceting 242 # und http://opensource.timetric.com/sunburnt/queryingsolr.html#faceting
243 #dokumentiert. Highlighting selbst wird in sorlconfig.xml konfiguriert. 243 #dokumentiert. Highlighting selbst wird in sorlconfig.xml konfiguriert.
244 #return ein Queryobjet, zur eigentlichen Suche muss darauf noch execute ausgeführt werden. 244 #return ein Queryobjet, zur eigentlichen Suche muss darauf noch execute ausgeführt werden.
245 245
246 def prepareSearch(self,solrQuery,facetFields=[],start=0,rows=10,facetSearch=None,sortFacets=True,orSearch=None,facetFields_limit=None): 246 def prepareSearch(self,solrQuery,facetFields=[],start=0,rows=10,facetSearch=None,sortFacets=True,orSearch=None):
247 "search solr" 247 "search solr"
248 248
249 249
250 ranges={} 250 ranges={}
251 ## deal with a form 251 ## deal with a form
412 if len(facetFields)>0: 412 if len(facetFields)>0:
413 #for facet in facetFields: 413 #for facet in facetFields:
414 414
415 # res = res.facet_by(facet) 415 # res = res.facet_by(facet)
416 416
417 417
418 if facetFields_limit: 418 res = res.facet_by(facetFields)
419 res = res.facet_by(facetFields,limit=facetFields_limit)
420 else:
421 res = res.facet_by(facetFields)
422 419
423 #res=res.paginate(start=start, rows=rows).highlight("main_content") 420 #res=res.paginate(start=start, rows=rows).highlight("main_content")
424 421
425 res=res.paginate(start=start, rows=rows) 422 res=res.paginate(start=start, rows=rows)
426 423
458 #erzeugt eine Suchabfrage und führt diese aus. 455 #erzeugt eine Suchabfrage und führt diese aus.
459 #return {"result":response.result, "hl":response.highlighting,"facetFields":facetedFields} 456 #return {"result":response.result, "hl":response.highlighting,"facetFields":facetedFields}
460 457
461 def search(self,solrQuery,facetFields=[],start=0,rows=10,facetSearch=None,sortFacets=True,orSearch=None,facetFields_limit=None): 458 def search(self,solrQuery,facetFields=[],start=0,rows=10,facetSearch=None,sortFacets=True,orSearch=None,facetFields_limit=None):
462 459
463 res=self.prepareSearch(solrQuery,facetFields,start,rows,facetSearch,sortFacets,orSearch=orSearch,facetFields_limit=facetFields_limit) 460 res=self.prepareSearch(solrQuery,facetFields,start,rows,facetSearch,sortFacets,orSearch=orSearch)
464 response= res.execute() 461 #response= res.execute()
465 462
463 opt = res.options();
464
465
466
467 if facetFields_limit:
468
469
470 for field,limit in facetFields_limit.items():
471 opt["f.%s.facet.limit"%field]=limit
472
473
474 response= self._v_solr.search( **opt)
475
466 #speichere faceted fields 476 #speichere faceted fields
467 if len(facetFields)>0: 477 if len(facetFields)>0:
468 facetedFields=response.facet_counts.facet_fields 478 facetedFields=response.facet_counts.facet_fields
469 479
470 if sortFacets: 480 if sortFacets: