Mercurial > hg > zopeSolr
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: |