inquisitio 1.4.0 → 1.4.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 27dadb327fcc1198c7659d113e0c497c8e2ed787
4
- data.tar.gz: b074ca69a037d70633334e9b9c6fec1824ba5c5f
3
+ metadata.gz: e181e4e047d9916fb1ddac624160bdecfa655023
4
+ data.tar.gz: 98f870ea6089651bf63186bc4f17279ce01f6c7a
5
5
  SHA512:
6
- metadata.gz: 26adef66c212f20277c36a9cdf8fb656fc8b844293e3284d6bdc9f2d54e03b78d1ff795e58309a263bc48999da8ed7cb8e5ba83ce0d6a7ae2136206723c47ff3
7
- data.tar.gz: a5f8436b07dbfefcb928544e76196d61b2014a23b14162bfc87b32246b08c82e7813130f010390f70a3c92dd3cc5f7e8d45ece65b6a2645a5de68bc272ede2da
6
+ metadata.gz: ddf6c8e4108945fa0b6114efe04456e6aeff4bebb2c0298b1af1142f20e0d0807b031bf543677f25dcc62d4e04b866ba6fe27c79b1956d424b08e7b1b3a2f492
7
+ data.tar.gz: 0cfd15e583f38a96f838cdb3547685b82591c1f5f6e01eb6c092d823b98f2a2e86486ee1c436980868cf03a0caeccb815ab85465778363e8c37d863d056a2be3
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
+ 1.4.1 / 2015-07-15
2
+ [FEATURE] Searcher now supports #expressions(hash) which maps to expr. expressions in the 2013 api
3
+
1
4
  1.4.0 / 2015-07-14
2
- [FEATURE] Searcher now supports #options() to allow setting of the q.options parameter in the 2013 api
5
+ [FEATURE] Searcher now supports #options(hash) to allow setting of the q.options parameter in the 2013 api
3
6
 
4
7
  1.3.1 / 2015-07-13
5
8
  [BUGFIX] Fixed failing tests
@@ -9,6 +9,7 @@ module Inquisitio
9
9
  @query = options[:query]
10
10
  @filters = options[:filters] || {}
11
11
  @q_options = options[:q_options] || {}
12
+ @expressions = options[:expressions] || {}
12
13
  @arguments = options[:arguments] || {}
13
14
  @return_fields = options[:return_fields]
14
15
  @size = options[:size] || Inquisitio.config.default_search_size
@@ -23,6 +24,9 @@ module Inquisitio
23
24
  components << return_fields_query_string
24
25
  components << arguments
25
26
  components << '&q.options=' + CGI::escape(@q_options.map { |k, v| "{#{k}:#{v}}" }.join('')) unless @q_options.empty?
27
+ @expressions.each do |name,expression|
28
+ components << "&expr.#{name}=" + CGI::escape(expression)
29
+ end
26
30
  components << "&size=#{@size}" unless @arguments[:size]
27
31
  components << "&start=#{@start}" unless @arguments[:start] || @start == 0 || @start == '0'
28
32
  components << '&sort=' + @sort.map { |k, v| "#{k}%20#{v}" }.join(',') unless @sort.empty?
@@ -18,7 +18,8 @@ module Inquisitio
18
18
  returns: [],
19
19
  with: {},
20
20
  sort: {},
21
- q_options: {}
21
+ q_options: {},
22
+ expressions: {}
22
23
  }
23
24
  @failed_attempts = 0
24
25
 
@@ -90,6 +91,12 @@ module Inquisitio
90
91
  end
91
92
  end
92
93
 
94
+ def expressions(value)
95
+ clone do |s|
96
+ s.params[:expressions] = value
97
+ end
98
+ end
99
+
93
100
  def per(value)
94
101
  clone do |s|
95
102
  s.params[:per] = value.to_i
@@ -174,6 +181,7 @@ module Inquisitio
174
181
  start: params[:per] * (params[:page] - 1),
175
182
  sort: params[:sort],
176
183
  q_options: params[:q_options],
184
+ expressions: params[:expressions],
177
185
  return_fields: return_fields
178
186
  )
179
187
  end
@@ -1,3 +1,3 @@
1
1
  module Inquisitio
2
- VERSION = '1.4.0'
2
+ VERSION = '1.4.1'
3
3
  end
@@ -112,5 +112,11 @@ module Inquisitio
112
112
  expected_url = 'http://my.search-endpoint.com/2013-01-01/search?q=Star+Wars&q.options=%7Bfields%3A%5B%22title%5E2.0%22%2C+%22plot%5E0.5%22%5D%7D&size=10'
113
113
  assert_equal expected_url, url
114
114
  end
115
+
116
+ def test_create_search_url_with_expressions
117
+ url = SearchUrlBuilder.build(query: ['Star Wars'], expressions: {rank1: 'log10(clicks)*_score', rank2: 'cos( _score)'})
118
+ expected_url = 'http://my.search-endpoint.com/2013-01-01/search?q=Star+Wars&expr.rank1=log10%28clicks%29%2A_score&expr.rank2=cos%28+_score%29&size=10'
119
+ assert_equal expected_url, url
120
+ end
115
121
  end
116
122
  end
@@ -406,5 +406,31 @@ module Inquisitio
406
406
  refute search_url.include?('q.options='), "search url should not include q.options parameter:\n#{search_url}"
407
407
  end
408
408
 
409
+ def test_should_default_to_no_expressions
410
+ searcher = Searcher.where('Star Wars')
411
+ search_url = searcher.send(:search_url)
412
+ refute search_url =~ /(\?|&)expr\./, "search url should not include any expr. parameters:\n#{search_url}"
413
+ end
414
+
415
+ def test_expressions_should_not_mutate_searcher
416
+ searcher = Searcher.where('star wars')
417
+ searcher.expressions(rank1: 'log10(clicks)*_score')
418
+ search_url = searcher.send(:search_url)
419
+ refute search_url =~ /(\?|&)expr\.rank1=log10%28clicks%29%2A_score(&|$)/, "search url should not include rank1 expr. parameter:\n#{search_url}"
420
+ refute search_url =~ /(\?|&)expr\./, "search url should not include any expr. parameters:\n#{search_url}"
421
+ end
422
+
423
+ def test_should_add_one_expression_to_search
424
+ searcher = Searcher.where('star wars').expressions(rank1: 'log10(clicks)*_score')
425
+ search_url = searcher.send(:search_url)
426
+ assert search_url =~ /(\?|&)expr\.rank1=log10%28clicks%29%2A_score(&|$)/, "search url should include expr.rank1 parameter:\n#{search_url}"
427
+ end
428
+
429
+ def test_should_add_more_than_one_expression_to_search
430
+ searcher = Searcher.where('star wars').expressions(rank1: 'log10(clicks)*_score', rank2: 'cos( _score)')
431
+ search_url = searcher.send(:search_url)
432
+ assert search_url =~ /(\?|&)expr\.rank1=log10%28clicks%29%2A_score(&|$)/, "search url should include expr.rank1 parameter:\n#{search_url}"
433
+ assert search_url =~ /(\?|&)expr\.rank2=cos%28\+_score%29(&|$)/, "search url should include expr.rank1 parameter:\n#{search_url}"
434
+ end
409
435
  end
410
436
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: inquisitio
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jeremy Walker
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-07-14 00:00:00.000000000 Z
14
+ date: 2015-07-15 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: excon