Class: MultiSolr::SearchResult

Inherits:
Object
  • Object
show all
Defined in:
lib/multi_solr/search_result.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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_rowsObject

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_fieldsObject (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_rangesObject (readonly)

Integer mit Anzahl der Treffer



6
7
8
# File 'lib/multi_solr/search_result.rb', line 6

def facet_ranges
  @facet_ranges
end

#hitsObject (readonly)

Integer mit Anzahl der Treffer



6
7
8
# File 'lib/multi_solr/search_result.rb', line 6

def hits
  @hits
end

#hits_groupedObject (readonly)

Integer mit Anzahl der Treffer



6
7
8
# File 'lib/multi_solr/search_result.rb', line 6

def hits_grouped
  @hits_grouped
end

#metadataObject (readonly)

Integer mit Anzahl der Treffer



6
7
8
# File 'lib/multi_solr/search_result.rb', line 6

def 
  @metadata
end

#search_requestObject (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_resultObject (readonly)

Integer mit Anzahl der Treffer



6
7
8
# File 'lib/multi_solr/search_result.rb', line 6

def solr_result
  @solr_result
end

#statsObject (readonly)

Integer mit Anzahl der Treffer



6
7
8
# File 'lib/multi_solr/search_result.rb', line 6

def stats
  @stats
end

#stats_facetsObject (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_countsObject

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

#pageObject



48
49
50
# File 'lib/multi_solr/search_result.rb', line 48

def page
  @search_request.page
end

#paginate_resultObject

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_pagesObject



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