Class: Median::Primo::SearchRequest

Inherits:
Object
  • Object
show all
Defined in:
lib/median/primo/search_request.rb

Constant Summary collapse

PRECISION_OPTIONS =
{contains: 'contains', exact: 'exact', begins_with: 'begins_with'}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request_params) ⇒ SearchRequest

Returns a new instance of SearchRequest.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/median/primo/search_request.rb', line 5

def initialize(request_params)
  # set search term
  self.search_term = request_params[:q]
  # set the index field
  self.index_field = request_params[:if]
  # set the precision
  self.precision   = request_params[:po]
  # page and page size
  self.page        = request_params[:p]
  self.page_size   = request_params[:ps]
  # set facets
  self.facets      = request_params[:f]
  # doc id in case we do a fullview search
  # for a single record
  self.doc_id      = request_params[:id]
  # search scope
  self.scope       = request_params[:scope]
end

Instance Attribute Details

#index_fieldObject



32
33
34
# File 'lib/median/primo/search_request.rb', line 32

def index_field
  @index_field || 'any'
end

#scopeObject



79
80
81
# File 'lib/median/primo/search_request.rb', line 79

def scope
  @scope || 'default'
end

#search_termObject



26
27
28
# File 'lib/median/primo/search_request.rb', line 26

def search_term
  @search_term || doc_id
end

Instance Method Details

#doc_idObject



73
74
75
# File 'lib/median/primo/search_request.rb', line 73

def doc_id
  @doc_id
end

#doc_id=(value) ⇒ Object

doc id



69
70
71
# File 'lib/median/primo/search_request.rb', line 69

def doc_id=(value)
  @doc_id = value
end

#facetsObject



97
98
99
# File 'lib/median/primo/search_request.rb', line 97

def facets
  @facets || []
end

#facets=(value) ⇒ Object

Facets



84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/median/primo/search_request.rb', line 84

def facets=(value)
  @facets = []
  value.each do |facet_name, facet_values|
    facet_values.each do |facet_value|
      # create the facet struct
      facet       = OpenStruct.new
      facet.name  = facet_name
      facet.value = facet_value
      @facets << facet
    end if facet_name and facet_values and facet_values.is_a?(Array)
  end if value and value.is_a?(Hash)
end

#include_facet?(name) ⇒ Boolean

Returns:

  • (Boolean)


101
102
103
104
105
106
# File 'lib/median/primo/search_request.rb', line 101

def include_facet?(name)
  facets.each do |f|
    return true if f.name.downcase == name.downcase
  end if name.present?
  false
end

#pageObject



50
51
52
# File 'lib/median/primo/search_request.rb', line 50

def page
  @page || 1
end

#page=(value) ⇒ Object

page



46
47
48
# File 'lib/median/primo/search_request.rb', line 46

def page=(value)
  @page = value.to_i if value.to_i > 0
end

#page_sizeObject



59
60
61
# File 'lib/median/primo/search_request.rb', line 59

def page_size
  @page_size || 25
end

#page_size=(value) ⇒ Object

page size



55
56
57
# File 'lib/median/primo/search_request.rb', line 55

def page_size=(value)
  @page_size = value.to_i if value.to_i > 0
end

#precisionObject



41
42
43
# File 'lib/median/primo/search_request.rb', line 41

def precision
  @precision || PRECISION_OPTIONS[:contains]
end

#precision=(value) ⇒ Object

precision



37
38
39
# File 'lib/median/primo/search_request.rb', line 37

def precision=(value)
  @precision = PRECISION_OPTIONS[value.to_sym] if value.present?
end

#start_indexObject

start index



64
65
66
# File 'lib/median/primo/search_request.rb', line 64

def start_index
  ((page - 1) * page_size) + 1
end

#to_xmlObject

utils



110
111
112
# File 'lib/median/primo/search_request.rb', line 110

def to_xml
  @doc_id.present? ? fullview_request_xml : search_request_xml
end