thinking-sphinx 2.0.4 → 2.0.5
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.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"
|