Class: MultiSolr::SearchResult
- Inherits:
-
Object
- Object
- MultiSolr::SearchResult
- Defined in:
- lib/multi_solr/search_result.rb
Instance Attribute Summary collapse
-
#data_rows ⇒ Object
Array(Hash) mit den gefundenen Daten-Zeilen.
-
#facet_fields ⇒ Object
readonly
Integer mit Anzahl der Treffer.
-
#facet_ranges ⇒ Object
readonly
Integer mit Anzahl der Treffer.
-
#hits ⇒ Object
readonly
Integer mit Anzahl der Treffer.
-
#hits_grouped ⇒ Object
readonly
Integer mit Anzahl der Treffer.
-
#metadata ⇒ Object
readonly
Integer mit Anzahl der Treffer.
-
#search_request ⇒ Object
readonly
Integer mit Anzahl der Treffer.
-
#solr_result ⇒ Object
readonly
Integer mit Anzahl der Treffer.
-
#stats ⇒ Object
readonly
Integer mit Anzahl der Treffer.
-
#stats_facets ⇒ Object
readonly
Integer mit Anzahl der Treffer.
Instance Method Summary collapse
-
#facet_counts ⇒ Object
Mapper facet_fields => facet_counts wegen Abwärtskompatibilität.
-
#initialize(solr_result, solr_search_request, context) ⇒ SearchResult
constructor
Params: solr_result: Hash, so wie sie direkt vom SolR kommt solr_search_request: der zugehörige Such-Request (eine Instance von MultiSolr::SearchRequest) context: Context-Inforamtionen, so wie sie bei der Suchausführung angegeben wurden (siehe MultiSolr::BaseSearcher#execute).
- #page ⇒ Object
-
#paginate_result ⇒ Object
Paginierung der Result-Docs als WillPaginate::Collection Achtung! Dies bedingt das Gem “willpaginate”.
- #total_pages ⇒ Object
Constructor Details
#initialize(solr_result, solr_search_request, context) ⇒ SearchResult
Params:
solr_result: Hash, so wie sie direkt vom SolR kommt
solr_search_request: der zugehörige Such-Request (eine Instance von MultiSolr::SearchRequest)
context: Context-Inforamtionen, so wie sie bei der Suchausführung angegeben wurden (siehe MultiSolr::BaseSearcher#execute)
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/multi_solr/search_result.rb', line 23 def initialize solr_result, solr_search_request, context @solr_result = solr_result @search_request = solr_search_request @context = context if solr_result['grouped'] parse_grouping_result else parse_non_grouping_result end if @hits && @hits > 0 parse_stats if solr_result.key?('stats') parse_facet_counts end rescue => ex MultiSolr.logger.warn "#{self.class.name}.initialize: #{ex}\n\t"+ex.backtrace[0..10].join("\n\t") MultiSolr.logger.warn solr_result.inspect end |
Instance Attribute Details
#data_rows ⇒ Object
Array(Hash) mit den gefundenen Daten-Zeilen
16 17 18 |
# File 'lib/multi_solr/search_result.rb', line 16 def data_rows @data_rows end |
#facet_fields ⇒ Object (readonly)
Integer mit Anzahl der Treffer
6 7 8 |
# File 'lib/multi_solr/search_result.rb', line 6 def facet_fields @facet_fields end |
#facet_ranges ⇒ Object (readonly)
Integer mit Anzahl der Treffer
6 7 8 |
# File 'lib/multi_solr/search_result.rb', line 6 def facet_ranges @facet_ranges end |
#hits ⇒ Object (readonly)
Integer mit Anzahl der Treffer
6 7 8 |
# File 'lib/multi_solr/search_result.rb', line 6 def hits @hits end |
#hits_grouped ⇒ Object (readonly)
Integer mit Anzahl der Treffer
6 7 8 |
# File 'lib/multi_solr/search_result.rb', line 6 def hits_grouped @hits_grouped end |
#metadata ⇒ Object (readonly)
Integer mit Anzahl der Treffer
6 7 8 |
# File 'lib/multi_solr/search_result.rb', line 6 def @metadata end |
#search_request ⇒ Object (readonly)
Integer mit Anzahl der Treffer
6 7 8 |
# File 'lib/multi_solr/search_result.rb', line 6 def search_request @search_request end |
#solr_result ⇒ Object (readonly)
Integer mit Anzahl der Treffer
6 7 8 |
# File 'lib/multi_solr/search_result.rb', line 6 def solr_result @solr_result end |
#stats ⇒ Object (readonly)
Integer mit Anzahl der Treffer
6 7 8 |
# File 'lib/multi_solr/search_result.rb', line 6 def stats @stats end |
#stats_facets ⇒ Object (readonly)
Integer mit Anzahl der Treffer
6 7 8 |
# File 'lib/multi_solr/search_result.rb', line 6 def stats_facets @stats_facets end |
Instance Method Details
#facet_counts ⇒ Object
Mapper facet_fields => facet_counts wegen Abwärtskompatibilität
44 45 46 |
# File 'lib/multi_solr/search_result.rb', line 44 def facet_counts @facet_fields end |
#page ⇒ Object
48 49 50 |
# File 'lib/multi_solr/search_result.rb', line 48 def page @search_request.page end |
#paginate_result ⇒ Object
Paginierung der Result-Docs als WillPaginate::Collection Achtung! Dies bedingt das Gem “willpaginate”. Dieses ist nicht als Abhängikeit definiert
62 63 64 65 66 67 68 |
# File 'lib/multi_solr/search_result.rb', line 62 def paginate_result return if @data_rows.nil? || @data_rows.empty? @data_rows = WillPaginate::Collection.create(@search_request.page, @search_request.page_size) do |pager| pager.replace(@data_rows) pager.total_entries = @hits end end |
#total_pages ⇒ Object
52 53 54 55 56 57 |
# File 'lib/multi_solr/search_result.rb', line 52 def total_pages return @_total_pages if @_total_pages @_total_pages, rest = @hits.divmod(@search_request.page_size) @_total_pages += 1 if rest > 0 @_total_pages end |