thinking-sphinx 2.0.4 → 2.0.5
Sign up to get free protection for your applications and to get access to all the features.
- data/README.textile +2 -0
- data/VERSION +1 -1
- data/features/searching_by_model.feature +13 -0
- data/features/support/env.rb +2 -1
- data/features/thinking_sphinx/db/fixtures/cats.rb +1 -1
- data/features/thinking_sphinx/db/fixtures/dogs.rb +1 -1
- data/features/thinking_sphinx/db/fixtures/foxes.rb +1 -1
- data/features/thinking_sphinx/db/fixtures/posts.rb +5 -1
- data/features/thinking_sphinx/db/migrations/create_posts.rb +1 -0
- data/features/thinking_sphinx/models/developer.rb +1 -0
- data/features/thinking_sphinx/models/music.rb +3 -1
- data/features/thinking_sphinx/models/post.rb +1 -0
- data/lib/thinking_sphinx.rb +2 -2
- data/lib/thinking_sphinx/active_record.rb +32 -2
- data/lib/thinking_sphinx/active_record/delta.rb +0 -27
- data/lib/thinking_sphinx/adapters/mysql_adapter.rb +4 -0
- data/lib/thinking_sphinx/adapters/postgresql_adapter.rb +4 -0
- data/lib/thinking_sphinx/association.rb +55 -5
- data/lib/thinking_sphinx/attribute.rb +17 -10
- data/lib/thinking_sphinx/auto_version.rb +1 -1
- data/lib/thinking_sphinx/class_facet.rb +7 -3
- data/lib/thinking_sphinx/configuration.rb +3 -3
- data/lib/thinking_sphinx/facet.rb +1 -0
- data/lib/thinking_sphinx/facet_search.rb +5 -1
- data/lib/thinking_sphinx/field.rb +16 -0
- data/lib/thinking_sphinx/search.rb +21 -5
- data/lib/thinking_sphinx/sinatra.rb +7 -0
- data/lib/thinking_sphinx/source.rb +33 -2
- data/lib/thinking_sphinx/source/internal_properties.rb +8 -3
- data/lib/thinking_sphinx/source/sql.rb +10 -1
- data/spec/thinking_sphinx/attribute_spec.rb +86 -94
- data/spec/thinking_sphinx/auto_version_spec.rb +8 -0
- data/spec/thinking_sphinx/facet_search_spec.rb +12 -6
- data/spec/thinking_sphinx/index/builder_spec.rb +32 -29
- data/spec/thinking_sphinx/search_spec.rb +14 -11
- metadata +5 -4
@@ -46,6 +46,14 @@ describe ThinkingSphinx::AutoVersion do
|
|
46
46
|
ThinkingSphinx::AutoVersion.detect
|
47
47
|
end
|
48
48
|
|
49
|
+
it "should require 2.0.1 if using Sphinx 2.0.2 dev" do
|
50
|
+
ThinkingSphinx::AutoVersion.should_receive(:require).
|
51
|
+
with('riddle/2.0.1')
|
52
|
+
|
53
|
+
@config.stub!(:version => '2.0.2-dev')
|
54
|
+
ThinkingSphinx::AutoVersion.detect
|
55
|
+
end
|
56
|
+
|
49
57
|
it "should output a warning if the detected version is unsupported" do
|
50
58
|
STDERR.should_receive(:puts).with(/unsupported/i)
|
51
59
|
|
@@ -16,16 +16,22 @@ describe ThinkingSphinx::FacetSearch do
|
|
16
16
|
|
17
17
|
it "should request all shared facets in a multi-model request by default" do
|
18
18
|
ThinkingSphinx.stub!(:search => search)
|
19
|
-
|
19
|
+
if Riddle.loaded_version.to_i < 2
|
20
|
+
ThinkingSphinx::FacetSearch.new.facet_names.should == ['class_crc']
|
21
|
+
else
|
22
|
+
ThinkingSphinx::FacetSearch.new.facet_names.should == ['sphinx_internal_class']
|
23
|
+
end
|
20
24
|
end
|
21
25
|
|
22
26
|
it "should request all facets in a multi-model request if specified" do
|
23
27
|
ThinkingSphinx.stub!(:search => search)
|
24
|
-
ThinkingSphinx::FacetSearch.new(
|
25
|
-
|
26
|
-
|
27
|
-
'class_crc', 'city_facet', 'state_facet', 'birthday'
|
28
|
-
|
28
|
+
names = ThinkingSphinx::FacetSearch.new(:all_facets => true).facet_names
|
29
|
+
|
30
|
+
if Riddle.loaded_version.to_i < 2
|
31
|
+
names.should == ['class_crc', 'city_facet', 'state_facet', 'birthday']
|
32
|
+
else
|
33
|
+
names.should == ['sphinx_internal_class', 'city_facet', 'state_facet', 'birthday']
|
34
|
+
end
|
29
35
|
end
|
30
36
|
|
31
37
|
it "should use the system-set max_matches for limit on facet calls" do
|
@@ -1,6 +1,9 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe ThinkingSphinx::Index::Builder do
|
4
|
+
let(:internal_attribute_count) {
|
5
|
+
Riddle.loaded_version.to_i < 2 ? 3 : 4
|
6
|
+
}
|
4
7
|
describe ".generate without source scope" do
|
5
8
|
before :each do
|
6
9
|
@index = ThinkingSphinx::Index::Builder.generate(Person) do
|
@@ -31,10 +34,10 @@ describe ThinkingSphinx::Index::Builder do
|
|
31
34
|
@source.fields[1].unique_name.should == :last_name
|
32
35
|
end
|
33
36
|
|
34
|
-
it "should have two attributes alongside the
|
35
|
-
@source.attributes.length.should ==
|
36
|
-
@source.attributes[
|
37
|
-
@source.attributes[
|
37
|
+
it "should have two attributes alongside the internal ones" do
|
38
|
+
@source.attributes.length.should == 2 + internal_attribute_count
|
39
|
+
@source.attributes[internal_attribute_count].unique_name.should == :birthday
|
40
|
+
@source.attributes[1 + internal_attribute_count].unique_name.should == :internal_id
|
38
41
|
end
|
39
42
|
|
40
43
|
it "should have one condition" do
|
@@ -95,8 +98,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
95
98
|
@source.fields.length.should == 1
|
96
99
|
end
|
97
100
|
|
98
|
-
it "should have one attribute alongside the
|
99
|
-
@source.attributes.length.should ==
|
101
|
+
it "should have one attribute alongside the internal ones" do
|
102
|
+
@source.attributes.length.should == 1 + internal_attribute_count
|
100
103
|
end
|
101
104
|
|
102
105
|
it "should set the attribute name to have the _sort suffix" do
|
@@ -142,8 +145,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
142
145
|
@source.fields.length.should == 1
|
143
146
|
end
|
144
147
|
|
145
|
-
it "should have one attribute alongside the
|
146
|
-
@source.attributes.length.should ==
|
148
|
+
it "should have one attribute alongside the internal ones" do
|
149
|
+
@source.attributes.length.should == 1 + internal_attribute_count
|
147
150
|
end
|
148
151
|
|
149
152
|
it "should set the attribute name to have the _facet suffix" do
|
@@ -174,8 +177,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
174
177
|
Alpha.sphinx_facets.delete_at(-1)
|
175
178
|
end
|
176
179
|
|
177
|
-
it "should have just one attribute alongside the
|
178
|
-
@source.attributes.length.should ==
|
180
|
+
it "should have just one attribute alongside the internal ones" do
|
181
|
+
@source.attributes.length.should == 1 + internal_attribute_count
|
179
182
|
end
|
180
183
|
end
|
181
184
|
|
@@ -193,8 +196,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
193
196
|
Person.sphinx_facets.delete_at(-1)
|
194
197
|
end
|
195
198
|
|
196
|
-
it "should have just one attribute alongside the
|
197
|
-
@source.attributes.length.should ==
|
199
|
+
it "should have just one attribute alongside the internal ones" do
|
200
|
+
@source.attributes.length.should == 1 + internal_attribute_count
|
198
201
|
end
|
199
202
|
end
|
200
203
|
|
@@ -212,8 +215,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
212
215
|
Beta.sphinx_facets.delete_at(-1)
|
213
216
|
end
|
214
217
|
|
215
|
-
it "should have just one attribute alongside the
|
216
|
-
@source.attributes.length.should ==
|
218
|
+
it "should have just one attribute alongside the internal ones" do
|
219
|
+
@source.attributes.length.should == 1 + internal_attribute_count
|
217
220
|
end
|
218
221
|
end
|
219
222
|
|
@@ -231,8 +234,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
231
234
|
Alpha.sphinx_facets.delete_at(-1)
|
232
235
|
end
|
233
236
|
|
234
|
-
it "should have just one attribute alongside the
|
235
|
-
@source.attributes.length.should ==
|
237
|
+
it "should have just one attribute alongside the internal ones" do
|
238
|
+
@source.attributes.length.should == 1 + internal_attribute_count
|
236
239
|
end
|
237
240
|
end
|
238
241
|
|
@@ -250,8 +253,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
250
253
|
Person.sphinx_facets.delete_at(-1)
|
251
254
|
end
|
252
255
|
|
253
|
-
it "should have two attributes alongside the
|
254
|
-
@source.attributes.length.should ==
|
256
|
+
it "should have two attributes alongside the internal ones" do
|
257
|
+
@source.attributes.length.should == 2 + internal_attribute_count
|
255
258
|
end
|
256
259
|
|
257
260
|
it "should set the facet attribute name to have the _facet suffix" do
|
@@ -282,8 +285,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
282
285
|
Person.sphinx_facets.delete_at(-1)
|
283
286
|
end
|
284
287
|
|
285
|
-
it "should have two attributes alongside the
|
286
|
-
@source.attributes.length.should ==
|
288
|
+
it "should have two attributes alongside the internal ones" do
|
289
|
+
@source.attributes.length.should == 2 + internal_attribute_count
|
287
290
|
end
|
288
291
|
|
289
292
|
it "should set the facet attribute name to have the _facet suffix" do
|
@@ -321,8 +324,8 @@ describe ThinkingSphinx::Index::Builder do
|
|
321
324
|
@source.fields.length.should == 1
|
322
325
|
end
|
323
326
|
|
324
|
-
it "should have one attribute alongside the
|
325
|
-
@source.attributes.length.should ==
|
327
|
+
it "should have one attribute alongside the internal ones" do
|
328
|
+
@source.attributes.length.should == 1 + internal_attribute_count
|
326
329
|
end
|
327
330
|
|
328
331
|
it "should set the attribute name to have the _facet suffix" do
|
@@ -381,10 +384,10 @@ describe ThinkingSphinx::Index::Builder do
|
|
381
384
|
@source.fields[1].unique_name.should == :last_name
|
382
385
|
end
|
383
386
|
|
384
|
-
it "should have two attributes alongside the
|
385
|
-
@source.attributes.length.should ==
|
386
|
-
@source.attributes[
|
387
|
-
@source.attributes[
|
387
|
+
it "should have two attributes alongside the internal ones" do
|
388
|
+
@source.attributes.length.should == 2 + internal_attribute_count
|
389
|
+
@source.attributes[internal_attribute_count].unique_name.should == :birthday
|
390
|
+
@source.attributes[1 + internal_attribute_count].unique_name.should == :internal_id
|
388
391
|
end
|
389
392
|
end
|
390
393
|
|
@@ -418,12 +421,12 @@ describe ThinkingSphinx::Index::Builder do
|
|
418
421
|
end
|
419
422
|
|
420
423
|
it "should have two attributes alongside the six internal ones" do
|
421
|
-
@index.attributes.length.should ==
|
424
|
+
@index.attributes.length.should == 2 + (internal_attribute_count * 2)
|
422
425
|
end
|
423
426
|
|
424
|
-
it "should have one attribute in each source alongside the
|
427
|
+
it "should have one attribute in each source alongside the internal ones" do
|
425
428
|
@index.sources.each do |source|
|
426
|
-
source.attributes.length.should ==
|
429
|
+
source.attributes.length.should == 1 + internal_attribute_count
|
427
430
|
end
|
428
431
|
end
|
429
432
|
end
|
@@ -1145,10 +1145,11 @@ describe ThinkingSphinx::Search do
|
|
1145
1145
|
@client.stub! :query => {
|
1146
1146
|
:matches => [{
|
1147
1147
|
:attributes => {
|
1148
|
-
'sphinx_internal_id'
|
1149
|
-
'
|
1150
|
-
'
|
1151
|
-
'@
|
1148
|
+
'sphinx_internal_id' => @alpha.id,
|
1149
|
+
'sphinx_internal_class' => 'Alpha',
|
1150
|
+
'class_crc' => Alpha.to_crc32,
|
1151
|
+
'@groupby' => 101,
|
1152
|
+
'@count' => 5
|
1152
1153
|
}
|
1153
1154
|
}]
|
1154
1155
|
}
|
@@ -1182,8 +1183,9 @@ describe ThinkingSphinx::Search do
|
|
1182
1183
|
@client.stub! :query => {
|
1183
1184
|
:matches => [{
|
1184
1185
|
:attributes => {
|
1185
|
-
'sphinx_internal_id'
|
1186
|
-
'
|
1186
|
+
'sphinx_internal_id' => @alpha.id,
|
1187
|
+
'sphinx_internal_class' => 'Alpha',
|
1188
|
+
'class_crc' => Alpha.to_crc32
|
1187
1189
|
}, :weight => 12
|
1188
1190
|
}]
|
1189
1191
|
}
|
@@ -1207,11 +1209,12 @@ describe ThinkingSphinx::Search do
|
|
1207
1209
|
@client.stub! :query => {
|
1208
1210
|
:matches => [{
|
1209
1211
|
:attributes => {
|
1210
|
-
'sphinx_internal_id'
|
1211
|
-
'
|
1212
|
-
'
|
1213
|
-
'@
|
1214
|
-
'@
|
1212
|
+
'sphinx_internal_id' => @alpha.id,
|
1213
|
+
'sphinx_internal_class' => 'Alpha',
|
1214
|
+
'class_crc' => Alpha.to_crc32,
|
1215
|
+
'@geodist' => 101,
|
1216
|
+
'@groupby' => 102,
|
1217
|
+
'@count' => 103
|
1215
1218
|
}, :weight => 12
|
1216
1219
|
}]
|
1217
1220
|
}
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: thinking-sphinx
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 2.0.
|
5
|
+
version: 2.0.5
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Pat Allan
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-05-
|
13
|
+
date: 2011-05-25 00:00:00 +02:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -31,7 +31,7 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version: 1.3.
|
34
|
+
version: 1.3.3
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: *id002
|
@@ -240,6 +240,7 @@ files:
|
|
240
240
|
- lib/thinking_sphinx/railtie.rb
|
241
241
|
- lib/thinking_sphinx/search.rb
|
242
242
|
- lib/thinking_sphinx/search_methods.rb
|
243
|
+
- lib/thinking_sphinx/sinatra.rb
|
243
244
|
- lib/thinking_sphinx/source.rb
|
244
245
|
- lib/thinking_sphinx/source/internal_properties.rb
|
245
246
|
- lib/thinking_sphinx/source/sql.rb
|
@@ -378,7 +379,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
378
379
|
requirements:
|
379
380
|
- - ">="
|
380
381
|
- !ruby/object:Gem::Version
|
381
|
-
hash:
|
382
|
+
hash: 1998854075128866188
|
382
383
|
segments:
|
383
384
|
- 0
|
384
385
|
version: "0"
|