thinking-sphinx 2.0.5 → 2.0.6
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 +7 -1
- data/features/searching_by_model.feature +24 -30
- data/features/step_definitions/common_steps.rb +5 -5
- data/features/thinking_sphinx/db/.gitignore +1 -0
- data/features/thinking_sphinx/db/fixtures/post_keywords.txt +1 -0
- data/spec/fixtures/data.sql +32 -0
- data/spec/fixtures/database.yml.default +3 -0
- data/spec/fixtures/models.rb +161 -0
- data/spec/fixtures/structure.sql +146 -0
- data/spec/spec_helper.rb +62 -0
- data/spec/sphinx_helper.rb +61 -0
- data/spec/support/rails.rb +18 -0
- data/spec/thinking_sphinx/active_record/delta_spec.rb +24 -24
- data/spec/thinking_sphinx/active_record/has_many_association_spec.rb +27 -0
- data/spec/thinking_sphinx/active_record/scopes_spec.rb +25 -25
- data/spec/thinking_sphinx/active_record_spec.rb +108 -107
- data/spec/thinking_sphinx/adapters/abstract_adapter_spec.rb +38 -38
- data/spec/thinking_sphinx/association_spec.rb +69 -35
- data/spec/thinking_sphinx/context_spec.rb +61 -64
- data/spec/thinking_sphinx/search_spec.rb +7 -0
- data/spec/thinking_sphinx_spec.rb +47 -46
- metadata +49 -141
- data/VERSION +0 -1
- data/lib/cucumber/thinking_sphinx/external_world.rb +0 -12
- data/lib/cucumber/thinking_sphinx/internal_world.rb +0 -127
- data/lib/cucumber/thinking_sphinx/sql_logger.rb +0 -20
- data/lib/thinking-sphinx.rb +0 -1
- data/lib/thinking_sphinx.rb +0 -301
- data/lib/thinking_sphinx/action_controller.rb +0 -31
- data/lib/thinking_sphinx/active_record.rb +0 -384
- data/lib/thinking_sphinx/active_record/attribute_updates.rb +0 -52
- data/lib/thinking_sphinx/active_record/delta.rb +0 -65
- data/lib/thinking_sphinx/active_record/has_many_association.rb +0 -36
- data/lib/thinking_sphinx/active_record/has_many_association_with_scopes.rb +0 -21
- data/lib/thinking_sphinx/active_record/log_subscriber.rb +0 -61
- data/lib/thinking_sphinx/active_record/scopes.rb +0 -93
- data/lib/thinking_sphinx/adapters/abstract_adapter.rb +0 -87
- data/lib/thinking_sphinx/adapters/mysql_adapter.rb +0 -62
- data/lib/thinking_sphinx/adapters/postgresql_adapter.rb +0 -157
- data/lib/thinking_sphinx/association.rb +0 -219
- data/lib/thinking_sphinx/attribute.rb +0 -396
- data/lib/thinking_sphinx/auto_version.rb +0 -38
- data/lib/thinking_sphinx/bundled_search.rb +0 -44
- data/lib/thinking_sphinx/class_facet.rb +0 -20
- data/lib/thinking_sphinx/configuration.rb +0 -339
- data/lib/thinking_sphinx/context.rb +0 -76
- data/lib/thinking_sphinx/core/string.rb +0 -15
- data/lib/thinking_sphinx/deltas.rb +0 -28
- data/lib/thinking_sphinx/deltas/default_delta.rb +0 -62
- data/lib/thinking_sphinx/deploy/capistrano.rb +0 -101
- data/lib/thinking_sphinx/excerpter.rb +0 -23
- data/lib/thinking_sphinx/facet.rb +0 -128
- data/lib/thinking_sphinx/facet_search.rb +0 -170
- data/lib/thinking_sphinx/field.rb +0 -98
- data/lib/thinking_sphinx/index.rb +0 -157
- data/lib/thinking_sphinx/index/builder.rb +0 -312
- data/lib/thinking_sphinx/index/faux_column.rb +0 -118
- data/lib/thinking_sphinx/join.rb +0 -37
- data/lib/thinking_sphinx/property.rb +0 -185
- data/lib/thinking_sphinx/railtie.rb +0 -46
- data/lib/thinking_sphinx/search.rb +0 -972
- data/lib/thinking_sphinx/search_methods.rb +0 -439
- data/lib/thinking_sphinx/sinatra.rb +0 -7
- data/lib/thinking_sphinx/source.rb +0 -194
- data/lib/thinking_sphinx/source/internal_properties.rb +0 -51
- data/lib/thinking_sphinx/source/sql.rb +0 -157
- data/lib/thinking_sphinx/tasks.rb +0 -130
- data/lib/thinking_sphinx/test.rb +0 -55
- data/tasks/distribution.rb +0 -33
- data/tasks/testing.rb +0 -80
data/README.textile
CHANGED
@@ -126,7 +126,6 @@ Since I first released this library, there's been quite a few people who have su
|
|
126
126
|
* Andrei Bocan
|
127
127
|
* László Bácsi
|
128
128
|
* Peter Wagenet
|
129
|
-
* Max Lapshin
|
130
129
|
* Martin Emde
|
131
130
|
* David Wennergren
|
132
131
|
* Mark Lane
|
@@ -210,3 +209,10 @@ Since I first released this library, there's been quite a few people who have su
|
|
210
209
|
* Alex Chee
|
211
210
|
* Florent Piteau
|
212
211
|
* Bruno Santschi
|
212
|
+
* Lars Weiler
|
213
|
+
* Andrey Deryabin
|
214
|
+
* Andrew White
|
215
|
+
* Rémi Prévost
|
216
|
+
* Justin Tanner
|
217
|
+
* Josh Goebel
|
218
|
+
* Jonathan Viney
|
@@ -2,19 +2,19 @@ Feature: Searching on a single model
|
|
2
2
|
In order to use Thinking Sphinx's core functionality
|
3
3
|
A developer
|
4
4
|
Should be able to search on a single model
|
5
|
-
|
5
|
+
|
6
6
|
Scenario: Searching using a basic query
|
7
7
|
Given Sphinx is running
|
8
8
|
And I am searching on people
|
9
9
|
When I search for James
|
10
10
|
Then I should get 3 results
|
11
|
-
|
11
|
+
|
12
12
|
Scenario: Searching on a specific field
|
13
13
|
Given Sphinx is running
|
14
14
|
And I am searching on people
|
15
15
|
When I search for James on first_name
|
16
16
|
Then I should get 2 results
|
17
|
-
|
17
|
+
|
18
18
|
Scenario: Searching on multiple fields
|
19
19
|
Given Sphinx is running
|
20
20
|
And I am searching on people
|
@@ -25,32 +25,32 @@ Feature: Searching on a single model
|
|
25
25
|
Scenario: Searching on association content
|
26
26
|
Given Sphinx is running
|
27
27
|
And I am searching on posts
|
28
|
-
|
28
|
+
|
29
29
|
When I search for "Waffles"
|
30
30
|
Then I should get 1 result
|
31
31
|
|
32
32
|
When I search for "Turtle"
|
33
33
|
Then I should get 1 result
|
34
|
-
|
34
|
+
|
35
35
|
Scenario: Searching with a filter
|
36
36
|
Given Sphinx is running
|
37
37
|
And I am searching on alphas
|
38
38
|
When I filter by 1 on value
|
39
39
|
Then I should get 1 result
|
40
|
-
|
40
|
+
|
41
41
|
Scenario: Searching with multiple filters
|
42
42
|
Given Sphinx is running
|
43
43
|
And I am searching on boxes
|
44
44
|
When I filter by 2 on width
|
45
45
|
And I filter by 2 on length
|
46
46
|
Then I should get 1 result
|
47
|
-
|
47
|
+
|
48
48
|
Scenario: Searching with a ranged time filter
|
49
49
|
Given Sphinx is running
|
50
50
|
And I am searching on people
|
51
51
|
When I filter by birthday between 1975 and 1976
|
52
52
|
Then I should get 16 results
|
53
|
-
|
53
|
+
|
54
54
|
Scenario: Searching to filter multiple values on an MVA
|
55
55
|
Given Sphinx is running
|
56
56
|
And I am searching on boxes
|
@@ -59,31 +59,25 @@ Feature: Searching on a single model
|
|
59
59
|
When I clear existing filters
|
60
60
|
And I filter by both 11 and 12 on dimensions
|
61
61
|
Then I should get 1 result
|
62
|
-
|
62
|
+
|
63
63
|
Scenario: Filtering on timestamp MVAs
|
64
64
|
Given Sphinx is running
|
65
65
|
And I am searching on posts
|
66
66
|
When I filter by 2001-01-01 on comments_created_at
|
67
67
|
Then I should get 1 result
|
68
|
-
|
69
|
-
Scenario: Filtering on a wordcount attribute
|
70
|
-
Given Sphinx is running
|
71
|
-
And I am searching on developers
|
72
|
-
When I filter between 0 and 1 on state_wordcount
|
73
|
-
Then I should get 5 results
|
74
|
-
|
68
|
+
|
75
69
|
Scenario: Searching by NULL/0 values in MVAs
|
76
70
|
Given Sphinx is running
|
77
71
|
And I am searching on boxes
|
78
72
|
When I filter by 0 on dimensions
|
79
73
|
Then I should get 1 result
|
80
|
-
|
74
|
+
|
81
75
|
Given Sphinx is running
|
82
76
|
And I am searching on developers
|
83
77
|
When I clear existing filters
|
84
78
|
And I filter by 0 on tag_ids
|
85
79
|
Then I should get 1 result
|
86
|
-
|
80
|
+
|
87
81
|
Scenario: Searching on a MVA configured as ranged_query
|
88
82
|
Given Sphinx is running
|
89
83
|
And I am searching on posts
|
@@ -95,59 +89,59 @@ Feature: Searching on a single model
|
|
95
89
|
When I clear existing filters
|
96
90
|
And I filter by 10 on comment_ids
|
97
91
|
Then I should get 0 results
|
98
|
-
|
92
|
+
|
99
93
|
Scenario: Searching with ordering by attribute
|
100
94
|
Given Sphinx is running
|
101
95
|
And I am searching on alphas
|
102
96
|
When I order by value
|
103
97
|
Then I should get 10 results
|
104
98
|
And the value of each result should indicate order
|
105
|
-
|
99
|
+
|
106
100
|
Scenario: Intepreting Sphinx Internal Identifiers
|
107
101
|
Given Sphinx is running
|
108
102
|
And I am searching on people
|
109
103
|
Then I should get 20 results
|
110
104
|
And each result id should match the corresponding sphinx internal id
|
111
|
-
|
105
|
+
|
112
106
|
Scenario: Retrieving weightings
|
113
107
|
Given Sphinx is running
|
114
108
|
And I am searching on people
|
115
109
|
When I search for "Ellie Ford"
|
116
110
|
And I set match mode to any
|
117
111
|
Then I can iterate by result and weighting
|
118
|
-
|
112
|
+
|
119
113
|
Scenario: Retrieving group counts
|
120
114
|
Given Sphinx is running
|
121
115
|
And I am searching on people
|
122
116
|
When I group results by the birthday attribute
|
123
117
|
Then I can iterate by result and count
|
124
|
-
|
118
|
+
|
125
119
|
Scenario: Retrieving group values
|
126
120
|
Given Sphinx is running
|
127
121
|
And I am searching on people
|
128
122
|
When I group results by the birthday attribute
|
129
123
|
Then I can iterate by result and group
|
130
|
-
|
124
|
+
|
131
125
|
Scenario: Retrieving both group values and counts
|
132
126
|
Given Sphinx is running
|
133
127
|
And I am searching on people
|
134
128
|
When I group results by the birthday attribute
|
135
129
|
Then I can iterate by result and group and count
|
136
|
-
|
130
|
+
|
137
131
|
Scenario: Searching for ids
|
138
132
|
Given Sphinx is running
|
139
133
|
And I am searching on people
|
140
134
|
When I search for Ellie
|
141
135
|
And I am searching for ids
|
142
136
|
Then I should have an array of integers
|
143
|
-
|
137
|
+
|
144
138
|
Scenario: Search results should match Sphinx's order
|
145
139
|
Given Sphinx is running
|
146
140
|
And I am searching on people
|
147
141
|
When I search for Ellie
|
148
142
|
And I order by "sphinx_internal_id DESC"
|
149
143
|
Then searching for ids should match the record ids of the normal search results
|
150
|
-
|
144
|
+
|
151
145
|
Scenario: Retrieving total result count when total is less than a page
|
152
146
|
Given Sphinx is running
|
153
147
|
And I am searching on people
|
@@ -160,7 +154,7 @@ Feature: Searching on a single model
|
|
160
154
|
And I am searching on people
|
161
155
|
When I am retrieving the result count
|
162
156
|
Then I should get a value of 1000
|
163
|
-
|
157
|
+
|
164
158
|
Scenario: Searching with Unicode Characters
|
165
159
|
Given Sphinx is running
|
166
160
|
And I am searching on people
|
@@ -172,10 +166,10 @@ Feature: Searching on a single model
|
|
172
166
|
And I am searching on posts
|
173
167
|
When I search for "Shakespeare"
|
174
168
|
Then I should get 1 result
|
175
|
-
|
169
|
+
|
176
170
|
Scenario: Searching on content from file field
|
177
171
|
Given Sphinx is running
|
178
172
|
And I am searching on posts
|
179
173
|
When I search for "foo bar baz"
|
180
174
|
Then I should get 1 result
|
181
|
-
|
175
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Before do
|
2
2
|
$queries_executed = []
|
3
|
-
|
3
|
+
|
4
4
|
@model = nil
|
5
5
|
@method = :search
|
6
6
|
@query = ""
|
@@ -10,7 +10,7 @@ Before do
|
|
10
10
|
@with_all = {}
|
11
11
|
@options = {}
|
12
12
|
@results = nil
|
13
|
-
|
13
|
+
|
14
14
|
Given "updates are enabled"
|
15
15
|
end
|
16
16
|
|
@@ -73,7 +73,7 @@ end
|
|
73
73
|
|
74
74
|
When /^I filter by (\d\d\d\d)\-(\d\d)\-(\d\d) on (\w+)$/ do |y, m, d, attribute|
|
75
75
|
@results = nil
|
76
|
-
@with[attribute.to_sym] = Time.
|
76
|
+
@with[attribute.to_sym] = Time.gm(y.to_i, m.to_i, d.to_i).to_i
|
77
77
|
end
|
78
78
|
|
79
79
|
When /^I filter by (\d+) and (\d+) on (\w+)$/ do |value_one, value_two, attribute|
|
@@ -150,7 +150,7 @@ Then /^the (\w+) of each result should indicate order$/ do |attribute|
|
|
150
150
|
unless prev.nil?
|
151
151
|
current.send(attribute.to_sym).should >= prev.send(attribute.to_sym)
|
152
152
|
end
|
153
|
-
|
153
|
+
|
154
154
|
current
|
155
155
|
end
|
156
156
|
end
|
@@ -166,7 +166,7 @@ Then /^I can iterate by result and (\w+)$/ do |attribute|
|
|
166
166
|
attr_value.should be_kind_of(Integer)
|
167
167
|
end
|
168
168
|
}
|
169
|
-
|
169
|
+
|
170
170
|
results.send("each_with_#{attribute}", &iteration)
|
171
171
|
end
|
172
172
|
|
@@ -0,0 +1 @@
|
|
1
|
+
database.yml
|
@@ -0,0 +1 @@
|
|
1
|
+
foo bar baz
|
@@ -0,0 +1,32 @@
|
|
1
|
+
insert into `people` (gender, first_name, middle_initial, last_name, street_address, city, state, postcode, email, birthday, team_id, team_type) values('female','Ellie','K','Ford','38 Mills Street','Eagle Farm Bc','QLD','4009','Ellie.K.Ford@mailinator.com','1970/1/23 00:00:00', 3, 'CricketTeam');
|
2
|
+
insert into `people` (gender, first_name, middle_initial, last_name, street_address, city, state, postcode, email, birthday, team_id, team_type) values('female','Aaliyah','E','Allen','71 Murphy Street','Wyola West','WA','6407','Aaliyah.E.Allen@dodgit.com','1980/3/23 00:00:00', 3, 'CricketTeam');
|
3
|
+
insert into `people` (gender, first_name, middle_initial, last_name, street_address, city, state, postcode, email, birthday, team_id, team_type) values('male','Callum','C','Miah','89 Dalgarno Street','Bullawa Creek','NSW','2390','Callum.C.Miah@trashymail.com','1973/3/25 00:00:00', 3, 'CricketTeam');
|
4
|
+
insert into `people` (gender, first_name, middle_initial, last_name, street_address, city, state, postcode, email, birthday, team_id, team_type) values('male','Finley','L','Buckley','18 Queen Street','Manly Vale','NSW','2093','Finley.L.Buckley@spambob.com','1962/11/20 00:00:00', 3, 'CricketTeam');
|
5
|
+
insert into `people` (gender, first_name, middle_initial, last_name, street_address, city, state, postcode, email, birthday, team_id, team_type) values('female','Poppy','A','Hilton','36 Nerrigundah Drive','Nyora','VIC','3987','Poppy.A.Hilton@dodgit.com','1972/10/30 00:00:00', 3, 'CricketTeam');
|
6
|
+
insert into `people` (gender, first_name, middle_initial, last_name, street_address, city, state, postcode, email, birthday, team_id, team_type) values('female','Eloise','Z','Kennedy','18 Mt Berryman Road','Lilydale','QLD','4344','Eloise.Z.Kennedy@spambob.com','1973/9/28 00:00:00', 3, 'CricketTeam');
|
7
|
+
insert into `people` (gender, first_name, middle_initial, last_name, street_address, city, state, postcode, email, birthday, team_id, team_type) values('female','Shannon','L','Manning','60 Ocean Pde','Greenvale','QLD','4816','Shannon.L.Manning@dodgit.com','1956/6/13 00:00:00', 3, 'FootballTeam');
|
8
|
+
insert into `people` (gender, first_name, middle_initial, last_name, street_address, city, state, postcode, email, birthday, team_id, team_type) values('male','Oscar','C','Lawson','43 Feather Street','Battery Hill','QLD','4551','Oscar.C.Lawson@spambob.com','1979/10/17 00:00:00', 3, 'CricketTeam');
|
9
|
+
insert into `people` (gender, first_name, middle_initial, last_name, street_address, city, state, postcode, email, birthday, team_id, team_type) values('female','Sofia','K','Bray','26 Clifton Street','Pental Island','VIC','3586','Sofia.K.Bray@mailinator.com','1970/5/10 00:00:00', 3, 'CricketTeam');
|
10
|
+
insert into `people` (gender, first_name, middle_initial, last_name, street_address, city, state, postcode, email, birthday, team_id, team_type) values('male','Andrew','N','Byrne','35 Cecil Street','Monash Park','NSW','2111','Andrew.N.Byrne@spambob.com','1983/2/16 00:00:00', 3, 'CricketTeam');
|
11
|
+
|
12
|
+
insert into `alphas` (name) values ('one');
|
13
|
+
insert into `alphas` (name) values ('two');
|
14
|
+
insert into `alphas` (name) values ('three');
|
15
|
+
insert into `alphas` (name) values ('four');
|
16
|
+
insert into `alphas` (name) values ('five');
|
17
|
+
insert into `alphas` (name) values ('six');
|
18
|
+
insert into `alphas` (name) values ('seven');
|
19
|
+
insert into `alphas` (name) values ('eight');
|
20
|
+
insert into `alphas` (name) values ('nine');
|
21
|
+
insert into `alphas` (name) values ('ten');
|
22
|
+
|
23
|
+
insert into `betas` (name) values ('one');
|
24
|
+
insert into `betas` (name) values ('two');
|
25
|
+
insert into `betas` (name) values ('three');
|
26
|
+
insert into `betas` (name) values ('four');
|
27
|
+
insert into `betas` (name) values ('five');
|
28
|
+
insert into `betas` (name) values ('six');
|
29
|
+
insert into `betas` (name) values ('seven');
|
30
|
+
insert into `betas` (name) values ('eight');
|
31
|
+
insert into `betas` (name) values ('nine');
|
32
|
+
insert into `betas` (name) values ('ten');
|
@@ -0,0 +1,161 @@
|
|
1
|
+
class Tag < ActiveRecord::Base
|
2
|
+
belongs_to :person
|
3
|
+
belongs_to :football_team
|
4
|
+
belongs_to :cricket_team
|
5
|
+
end
|
6
|
+
|
7
|
+
class FootballTeam < ActiveRecord::Base
|
8
|
+
has_many :tags
|
9
|
+
has_many :people, :through => :tags
|
10
|
+
end
|
11
|
+
|
12
|
+
class CricketTeam < ActiveRecord::Base
|
13
|
+
has_many :people, :foreign_key => :team_id
|
14
|
+
|
15
|
+
define_index do
|
16
|
+
indexes :name
|
17
|
+
has "SELECT cricket_team_id, id FROM tags", :source => :query, :as => :tags
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
class Contact < ActiveRecord::Base
|
22
|
+
belongs_to :person
|
23
|
+
end
|
24
|
+
|
25
|
+
class Friendship < ActiveRecord::Base
|
26
|
+
belongs_to :person
|
27
|
+
belongs_to :friend, :class_name => "Person", :foreign_key => :friend_id
|
28
|
+
|
29
|
+
define_index do
|
30
|
+
indexes "'something'", :as => :something
|
31
|
+
has person_id, friend_id
|
32
|
+
|
33
|
+
set_property :latitude_attr => :person_id
|
34
|
+
set_property :longitude_attr => :person_id
|
35
|
+
end
|
36
|
+
|
37
|
+
sphinx_scope(:reverse) {
|
38
|
+
{:order => "@weight ASC"}
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
class Link < ActiveRecord::Base
|
43
|
+
has_and_belongs_to_many :people
|
44
|
+
end
|
45
|
+
|
46
|
+
class Person < ActiveRecord::Base
|
47
|
+
belongs_to :team, :polymorphic => :true
|
48
|
+
belongs_to :source, :polymorphic => :true
|
49
|
+
has_many :contacts
|
50
|
+
|
51
|
+
has_many :friendships
|
52
|
+
has_many :friends, :through => :friendships
|
53
|
+
|
54
|
+
has_many :tags
|
55
|
+
has_many :football_teams, :through => :tags
|
56
|
+
|
57
|
+
has_and_belongs_to_many :links
|
58
|
+
|
59
|
+
define_index do
|
60
|
+
indexes [first_name, middle_initial, last_name], :as => :name
|
61
|
+
indexes team.name, :as => :team_name
|
62
|
+
indexes contacts.phone_number, :as => :phone_numbers
|
63
|
+
indexes city, :prefixes => true, :facet => true
|
64
|
+
indexes state, :infixes => true, :facet => true
|
65
|
+
|
66
|
+
has [first_name, middle_initial, last_name], :as => :name_sort
|
67
|
+
has team.name, :as => :team_name_sort
|
68
|
+
|
69
|
+
has [:id, :team_id], :as => :ids
|
70
|
+
has team(:id), :as => :team_id
|
71
|
+
has football_teams(:id), :as => :football_team_id
|
72
|
+
|
73
|
+
has contacts.phone_number, :as => :phone_number_sort
|
74
|
+
has contacts(:id), :as => :contact_ids
|
75
|
+
|
76
|
+
has birthday, :facet => true
|
77
|
+
|
78
|
+
has friendships.person_id, :as => :friendly_ids
|
79
|
+
|
80
|
+
has :id, :as => :latitude
|
81
|
+
has :id, :as => :longitude
|
82
|
+
|
83
|
+
set_property :delta => true
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
class Parent < Person
|
88
|
+
end
|
89
|
+
|
90
|
+
module Admin
|
91
|
+
class Person < ::Person
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
class Child < Person
|
96
|
+
belongs_to :parent
|
97
|
+
define_index do
|
98
|
+
indexes [parent.first_name, parent.middle_initial, parent.last_name], :as => :parent_name
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
class Alpha < ActiveRecord::Base
|
103
|
+
has_many :betas, :class_name => 'Beta'
|
104
|
+
has_many :thetas
|
105
|
+
|
106
|
+
define_index do
|
107
|
+
indexes :name, :sortable => true
|
108
|
+
|
109
|
+
has :id, :as => :lat
|
110
|
+
has :id, :as => :lng
|
111
|
+
|
112
|
+
set_property :field_weights => {"name" => 10}
|
113
|
+
end
|
114
|
+
|
115
|
+
def big_name
|
116
|
+
name.upcase
|
117
|
+
end
|
118
|
+
|
119
|
+
def sphinx_attributes
|
120
|
+
:existing
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
class Beta < ActiveRecord::Base
|
125
|
+
has_many :gammas
|
126
|
+
|
127
|
+
define_index do
|
128
|
+
indexes :name, :sortable => true
|
129
|
+
|
130
|
+
has :id, :as => :lat
|
131
|
+
has :id, :as => :lon
|
132
|
+
|
133
|
+
set_property :delta => true
|
134
|
+
end
|
135
|
+
|
136
|
+
def excerpts
|
137
|
+
false
|
138
|
+
end
|
139
|
+
|
140
|
+
def matching_fields
|
141
|
+
:foo
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
class Gamma < ActiveRecord::Base
|
146
|
+
#
|
147
|
+
end
|
148
|
+
|
149
|
+
class Theta < ActiveRecord::Base
|
150
|
+
#
|
151
|
+
end
|
152
|
+
|
153
|
+
class Search < ActiveRecord::Base
|
154
|
+
#
|
155
|
+
end
|
156
|
+
|
157
|
+
class BigFoo < ActiveRecord::Base
|
158
|
+
define_index do
|
159
|
+
indexes name
|
160
|
+
end
|
161
|
+
end
|