cloud_search 0.1.3 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.md CHANGED
@@ -56,6 +56,16 @@ resp = searcher.with_fields(:actor, :director, :title, :year, :text_relevanc
56
56
  .search
57
57
  ```
58
58
 
59
+ ### You can use weighted fields in your search
60
+ ``` ruby
61
+ searcher = CloudSearch::Searcher.new
62
+ resp = searcher.with_fields(:actor, :director, :title, :year, :text_relevance)
63
+ .with_weights(:title => 3, :actor => 2, :default_weight => 1)
64
+ .as_boolean_query
65
+ .with_query("year:2000")
66
+ .search
67
+ ```
68
+
59
69
  ## Results
60
70
  ``` ruby
61
71
  resp.results.each do |result|
@@ -4,6 +4,8 @@ module CloudSearch
4
4
  class Searcher
5
5
  include ConfigurationChecking
6
6
 
7
+ attr_reader :weights
8
+
7
9
  def initialize
8
10
  @response = SearchResponse.new
9
11
  @filters = []
@@ -22,6 +24,11 @@ module CloudSearch
22
24
  self
23
25
  end
24
26
 
27
+ def with_weights(weights)
28
+ @weights = weights
29
+ self
30
+ end
31
+
25
32
  def with_filter(filter)
26
33
  @filters << filter
27
34
  self
@@ -76,6 +83,7 @@ module CloudSearch
76
83
  u.concat("?#{query_parameter}=#{query}&size=#{items_per_page}&start=#{start}")
77
84
  u.concat("&return-fields=#{URI.escape(@fields.join(","))}") if @fields && @fields.any?
78
85
  u.concat("&#{filter_expression}") if @filters.any?
86
+ u.concat("&#{weighted_fields_expression}") if @weights and !@weights.empty?
79
87
  end
80
88
  end
81
89
 
@@ -88,6 +96,12 @@ module CloudSearch
88
96
  def filter_expression
89
97
  @filters.join("&")
90
98
  end
99
+
100
+ def weighted_fields_expression
101
+ weights_json = JSON.unparse(@weights)
102
+ expression = "cs.text_relevance(#{weights_json})"
103
+ URI.escape expression
104
+ end
91
105
  end
92
106
  end
93
107
 
@@ -1,3 +1,3 @@
1
1
  module CloudSearch
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
@@ -41,6 +41,24 @@ describe CloudSearch::Searcher do
41
41
  end
42
42
  end
43
43
 
44
+ describe "#with_weights" do
45
+ before do
46
+ subject.with_query("star").with_weights(:title => 3, :description => 1, :default_weight => 0.5)
47
+ end
48
+
49
+ it "adds the informed weighted fields to the searcher object" do
50
+ subject.weights.should == {:title => 3, :description => 1, :default_weight => 0.5}
51
+ end
52
+
53
+ it "adds the weighted fields to the search url" do
54
+ subject.url.should == "#{url_prefix}q=star&size=10&start=0&cs.text_relevance(%7B%22title%22:3,%22description%22:1,%22default_weight%22:0.5%7D)"
55
+ end
56
+
57
+ it "returns the searcher object" do
58
+ subject.with_weights(:title => 3).should == subject
59
+ end
60
+ end
61
+
44
62
  describe "#as_boolean_query" do
45
63
  it "sets the query mode to 'boolean'" do
46
64
  subject.as_boolean_query
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloud_search
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-24 00:00:00.000000000 Z
12
+ date: 2012-11-06 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: pry
@@ -177,7 +177,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
177
177
  version: '0'
178
178
  segments:
179
179
  - 0
180
- hash: 2007370367070301926
180
+ hash: 1856628248014365830
181
181
  required_rubygems_version: !ruby/object:Gem::Requirement
182
182
  none: false
183
183
  requirements:
@@ -186,7 +186,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
186
186
  version: '0'
187
187
  segments:
188
188
  - 0
189
- hash: 2007370367070301926
189
+ hash: 1856628248014365830
190
190
  requirements: []
191
191
  rubyforge_project:
192
192
  rubygems_version: 1.8.24