cloud_search 0.0.8 → 0.0.9
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +2 -1
- data/lib/cloud_search/searcher.rb +12 -2
- data/lib/cloud_search/version.rb +1 -1
- data/spec/cloud_search/searcher_spec.rb +41 -33
- metadata +1 -1
data/README.md
CHANGED
@@ -51,7 +51,8 @@ resp = searcher.with_fields(:actor, :director, :title, :year, :text_relevanc
|
|
51
51
|
``` ruby
|
52
52
|
searcher = CloudSearch::Searcher.new
|
53
53
|
resp = searcher.with_fields(:actor, :director, :title, :year, :text_relevance)
|
54
|
-
.
|
54
|
+
.as_boolean_query
|
55
|
+
.with_query("year:2000")
|
55
56
|
.search
|
56
57
|
```
|
57
58
|
|
@@ -6,6 +6,7 @@ module CloudSearch
|
|
6
6
|
|
7
7
|
def initialize
|
8
8
|
@response = SearchResponse.new
|
9
|
+
@filters = []
|
9
10
|
end
|
10
11
|
|
11
12
|
def search
|
@@ -21,9 +22,13 @@ module CloudSearch
|
|
21
22
|
self
|
22
23
|
end
|
23
24
|
|
24
|
-
def
|
25
|
+
def with_filter(filter)
|
26
|
+
@filters << filter
|
27
|
+
self
|
28
|
+
end
|
29
|
+
|
30
|
+
def as_boolean_query
|
25
31
|
@boolean = true
|
26
|
-
with_query query
|
27
32
|
self
|
28
33
|
end
|
29
34
|
|
@@ -70,6 +75,7 @@ module CloudSearch
|
|
70
75
|
"#{CloudSearch.config.search_url}/search".tap do |u|
|
71
76
|
u.concat("?#{query_parameter}=#{query}&size=#{items_per_page}&start=#{start}")
|
72
77
|
u.concat("&return-fields=#{URI.escape(@fields.join(","))}") if @fields && @fields.any?
|
78
|
+
u.concat("&#{filter_expression}") if @filters.any?
|
73
79
|
end
|
74
80
|
end
|
75
81
|
|
@@ -78,6 +84,10 @@ module CloudSearch
|
|
78
84
|
def query_parameter
|
79
85
|
boolean_query? ? "bq" : "q"
|
80
86
|
end
|
87
|
+
|
88
|
+
def filter_expression
|
89
|
+
@filters.join("&")
|
90
|
+
end
|
81
91
|
end
|
82
92
|
end
|
83
93
|
|
data/lib/cloud_search/version.rb
CHANGED
@@ -27,25 +27,33 @@ describe CloudSearch::Searcher do
|
|
27
27
|
subject.with_query("foo")
|
28
28
|
subject.query.should == "foo"
|
29
29
|
end
|
30
|
+
|
31
|
+
it "returns cloud search url with foo query" do
|
32
|
+
subject.with_query("foo").url.should == "#{url_prefix}q=foo&size=10&start=0"
|
33
|
+
end
|
34
|
+
|
35
|
+
it "returns cloud search url with foo query" do
|
36
|
+
subject.with_query("f&oo").url.should == "#{url_prefix}q=f%26oo&size=10&start=0"
|
37
|
+
end
|
38
|
+
|
39
|
+
it "returns cloud search url with foo* query" do
|
40
|
+
subject.with_query("foo*").url.should == "#{url_prefix}q=foo*&size=10&start=0"
|
41
|
+
end
|
30
42
|
end
|
31
43
|
|
32
|
-
describe "#
|
44
|
+
describe "#as_boolean_query" do
|
33
45
|
it "sets the query mode to 'boolean'" do
|
34
|
-
subject.
|
46
|
+
subject.as_boolean_query
|
35
47
|
subject.should be_boolean_query
|
36
48
|
end
|
37
49
|
|
38
50
|
it "returns the searcher instance" do
|
39
|
-
subject.
|
40
|
-
end
|
41
|
-
|
42
|
-
it "sets the query term" do
|
43
|
-
subject.with_boolean_query("year:2000")
|
44
|
-
subject.query.should == "year:2000"
|
51
|
+
subject.as_boolean_query.should == subject
|
45
52
|
end
|
46
53
|
|
47
54
|
it "uses 'bq' to specify the query in the URL" do
|
48
|
-
subject.
|
55
|
+
subject.as_boolean_query
|
56
|
+
subject.with_query("year:2000")
|
49
57
|
subject.url.should == "#{url_prefix}bq=year:2000&size=10&start=0"
|
50
58
|
end
|
51
59
|
end
|
@@ -58,6 +66,10 @@ describe CloudSearch::Searcher do
|
|
58
66
|
it "setup more thane one value" do
|
59
67
|
subject.with_fields(:foo, :bar, :foobar)
|
60
68
|
end
|
69
|
+
|
70
|
+
it "returns cloud search url with foo and bar fields" do
|
71
|
+
subject.with_fields(:foo, :bar).url.should == "#{url_prefix}q=&size=10&start=0&return-fields=foo,bar"
|
72
|
+
end
|
61
73
|
end
|
62
74
|
|
63
75
|
describe "#items_per_page" do
|
@@ -80,6 +92,10 @@ describe CloudSearch::Searcher do
|
|
80
92
|
subject.with_items_per_page(100)
|
81
93
|
subject.items_per_page.should == 100
|
82
94
|
end
|
95
|
+
|
96
|
+
it "returns cloud search url with size equals 20" do
|
97
|
+
subject.with_items_per_page(20).url.should == "#{url_prefix}q=&size=20&start=0"
|
98
|
+
end
|
83
99
|
end
|
84
100
|
|
85
101
|
describe "#page_number" do
|
@@ -110,6 +126,22 @@ describe CloudSearch::Searcher do
|
|
110
126
|
subject.at_page(-1)
|
111
127
|
subject.page_number.should == 1
|
112
128
|
end
|
129
|
+
|
130
|
+
it "returns cloud search url with start at 11" do
|
131
|
+
subject.at_page(2).url.should == "#{url_prefix}q=&size=10&start=11"
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
describe "#with_filter" do
|
136
|
+
it "adds the filter to the query" do
|
137
|
+
subject.with_query("foo").with_filter("t-product_active=1")
|
138
|
+
subject.url.should == "#{url_prefix}q=foo&size=10&start=0&t-product_active=1"
|
139
|
+
end
|
140
|
+
|
141
|
+
it "can be used to add several filter expressions to the query" do
|
142
|
+
subject.with_query("foo").with_filter("t-product_active=1").with_filter("t-brand_active=1")
|
143
|
+
subject.url.should == "#{url_prefix}q=foo&size=10&start=0&t-product_active=1&t-brand_active=1"
|
144
|
+
end
|
113
145
|
end
|
114
146
|
|
115
147
|
describe "#start" do
|
@@ -127,30 +159,6 @@ describe CloudSearch::Searcher do
|
|
127
159
|
it "returns default cloud search url" do
|
128
160
|
subject.url.should == "#{url_prefix}q=&size=10&start=0"
|
129
161
|
end
|
130
|
-
|
131
|
-
it "returns cloud search url with foo query" do
|
132
|
-
subject.with_query("foo").url.should == "#{url_prefix}q=foo&size=10&start=0"
|
133
|
-
end
|
134
|
-
|
135
|
-
it "returns cloud search url with foo query" do
|
136
|
-
subject.with_query("f&oo").url.should == "#{url_prefix}q=f%26oo&size=10&start=0"
|
137
|
-
end
|
138
|
-
|
139
|
-
it "returns cloud search url with foo* query" do
|
140
|
-
subject.with_query("foo*").url.should == "#{url_prefix}q=foo*&size=10&start=0"
|
141
|
-
end
|
142
|
-
|
143
|
-
it "returns cloud search url with size equals 20" do
|
144
|
-
subject.with_items_per_page(20).url.should == "#{url_prefix}q=&size=20&start=0"
|
145
|
-
end
|
146
|
-
|
147
|
-
it "returns cloud search url with start at 19" do
|
148
|
-
subject.at_page(2).url.should == "#{url_prefix}q=&size=10&start=11"
|
149
|
-
end
|
150
|
-
|
151
|
-
it "returns cloud search url with foo and bar fields" do
|
152
|
-
subject.with_fields(:foo, :bar).url.should == "#{url_prefix}q=&size=10&start=0&return-fields=foo,bar"
|
153
|
-
end
|
154
162
|
end
|
155
163
|
|
156
164
|
describe "#search" do
|