plain_search 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +135 -0
  4. data/Rakefile +34 -0
  5. data/lib/plain_search.rb +6 -0
  6. data/lib/plain_search/concern.rb +186 -0
  7. data/lib/plain_search/railtie.rb +13 -0
  8. data/lib/plain_search/version.rb +3 -0
  9. data/lib/tasks/plain_search.rake +19 -0
  10. data/test/dummy/README.rdoc +28 -0
  11. data/test/dummy/Rakefile +6 -0
  12. data/test/dummy/app/assets/javascripts/application.js +13 -0
  13. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  14. data/test/dummy/app/controllers/application_controller.rb +5 -0
  15. data/test/dummy/app/helpers/application_helper.rb +2 -0
  16. data/test/dummy/app/models/company.rb +3 -0
  17. data/test/dummy/app/models/dossier.rb +2 -0
  18. data/test/dummy/app/models/employee.rb +3 -0
  19. data/test/dummy/app/models/search_term.rb +3 -0
  20. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  21. data/test/dummy/bin/bundle +3 -0
  22. data/test/dummy/bin/rails +4 -0
  23. data/test/dummy/bin/rake +4 -0
  24. data/test/dummy/bin/setup +29 -0
  25. data/test/dummy/config.ru +4 -0
  26. data/test/dummy/config/application.rb +26 -0
  27. data/test/dummy/config/boot.rb +5 -0
  28. data/test/dummy/config/database.yml +25 -0
  29. data/test/dummy/config/environment.rb +5 -0
  30. data/test/dummy/config/environments/development.rb +41 -0
  31. data/test/dummy/config/environments/production.rb +79 -0
  32. data/test/dummy/config/environments/test.rb +42 -0
  33. data/test/dummy/config/initializers/assets.rb +11 -0
  34. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  35. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  36. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  37. data/test/dummy/config/initializers/inflections.rb +16 -0
  38. data/test/dummy/config/initializers/mime_types.rb +4 -0
  39. data/test/dummy/config/initializers/session_store.rb +3 -0
  40. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  41. data/test/dummy/config/locales/en.yml +23 -0
  42. data/test/dummy/config/routes.rb +56 -0
  43. data/test/dummy/config/secrets.yml +22 -0
  44. data/test/dummy/db/development.sqlite3 +0 -0
  45. data/test/dummy/db/migrate/20151013022315_create_base_tables.rb +32 -0
  46. data/test/dummy/db/schema.rb +47 -0
  47. data/test/dummy/db/test.sqlite3 +0 -0
  48. data/test/dummy/log/development.log +340 -0
  49. data/test/dummy/log/test.log +3615 -0
  50. data/test/dummy/public/404.html +67 -0
  51. data/test/dummy/public/422.html +67 -0
  52. data/test/dummy/public/500.html +66 -0
  53. data/test/dummy/public/favicon.ico +0 -0
  54. data/test/plain_search_test.rb +136 -0
  55. data/test/test_helper.rb +19 -0
  56. metadata +176 -0
@@ -0,0 +1,23 @@
1
+ # Files in the config/locales directory are used for internationalization
2
+ # and are automatically loaded by Rails. If you want to use locales other
3
+ # than English, add the necessary files in this directory.
4
+ #
5
+ # To use the locales, use `I18n.t`:
6
+ #
7
+ # I18n.t 'hello'
8
+ #
9
+ # In views, this is aliased to just `t`:
10
+ #
11
+ # <%= t('hello') %>
12
+ #
13
+ # To use a different locale, set it with `I18n.locale`:
14
+ #
15
+ # I18n.locale = :es
16
+ #
17
+ # This would use the information in config/locales/es.yml.
18
+ #
19
+ # To learn more, please read the Rails Internationalization guide
20
+ # available at http://guides.rubyonrails.org/i18n.html.
21
+
22
+ en:
23
+ hello: "Hello world"
@@ -0,0 +1,56 @@
1
+ Rails.application.routes.draw do
2
+ # The priority is based upon order of creation: first created -> highest priority.
3
+ # See how all your routes lay out with "rake routes".
4
+
5
+ # You can have the root of your site routed with "root"
6
+ # root 'welcome#index'
7
+
8
+ # Example of regular route:
9
+ # get 'products/:id' => 'catalog#view'
10
+
11
+ # Example of named route that can be invoked with purchase_url(id: product.id)
12
+ # get 'products/:id/purchase' => 'catalog#purchase', as: :purchase
13
+
14
+ # Example resource route (maps HTTP verbs to controller actions automatically):
15
+ # resources :products
16
+
17
+ # Example resource route with options:
18
+ # resources :products do
19
+ # member do
20
+ # get 'short'
21
+ # post 'toggle'
22
+ # end
23
+ #
24
+ # collection do
25
+ # get 'sold'
26
+ # end
27
+ # end
28
+
29
+ # Example resource route with sub-resources:
30
+ # resources :products do
31
+ # resources :comments, :sales
32
+ # resource :seller
33
+ # end
34
+
35
+ # Example resource route with more complex sub-resources:
36
+ # resources :products do
37
+ # resources :comments
38
+ # resources :sales do
39
+ # get 'recent', on: :collection
40
+ # end
41
+ # end
42
+
43
+ # Example resource route with concerns:
44
+ # concern :toggleable do
45
+ # post 'toggle'
46
+ # end
47
+ # resources :posts, concerns: :toggleable
48
+ # resources :photos, concerns: :toggleable
49
+
50
+ # Example resource route within a namespace:
51
+ # namespace :admin do
52
+ # # Directs /admin/products/* to Admin::ProductsController
53
+ # # (app/controllers/admin/products_controller.rb)
54
+ # resources :products
55
+ # end
56
+ end
@@ -0,0 +1,22 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key is used for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+
6
+ # Make sure the secret is at least 30 characters and all random,
7
+ # no regular words or you'll be exposed to dictionary attacks.
8
+ # You can use `rake secret` to generate a secure secret key.
9
+
10
+ # Make sure the secrets in this file are kept private
11
+ # if you're sharing your code publicly.
12
+
13
+ development:
14
+ secret_key_base: 4bcfb254232a25fc3e57c19861f2924836e92b6e0b4812e8a1b8c4c6a70f22efe7997558e661d956e7404386076399ff32c32b9eb823e4dd02ccfad901187481
15
+
16
+ test:
17
+ secret_key_base: 77da05a57790faff2b49188154297fb65662799817139f3568726ea7b40a5b3e9c01694148c821937a2ba70c5c24a64ab96a55d2562b2fa4fbcd7cdd432dd263
18
+
19
+ # Do not keep production secrets in the repository,
20
+ # instead read values from the environment.
21
+ production:
22
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
Binary file
@@ -0,0 +1,32 @@
1
+ class CreateBaseTables < ActiveRecord::Migration
2
+ def change
3
+
4
+ create_table :companies do |t|
5
+ t.string :name
6
+ end
7
+
8
+ create_table :employees do |t|
9
+ t.belongs_to :company
10
+ t.string :first_name
11
+ t.string :last_name
12
+ t.string :address
13
+ t.string :zip_code
14
+ t.string :city
15
+ t.string :state
16
+ t.string :phone
17
+ t.string :email
18
+ t.string :profession
19
+ end
20
+
21
+ create_table :dossiers do |t|
22
+ t.string :filename
23
+ end
24
+
25
+ create_table :search_terms do |t|
26
+ t.string :term, index: true
27
+ t.string :source, index: true
28
+ t.belongs_to :findable, polymorphic: true
29
+ end
30
+
31
+ end
32
+ end
@@ -0,0 +1,47 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended that you check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(version: 20151013022315) do
15
+
16
+ create_table "companies", force: :cascade do |t|
17
+ t.string "name"
18
+ end
19
+
20
+ create_table "dossiers", force: :cascade do |t|
21
+ t.string "filename"
22
+ end
23
+
24
+ create_table "employees", force: :cascade do |t|
25
+ t.integer "company_id"
26
+ t.string "first_name"
27
+ t.string "last_name"
28
+ t.string "address"
29
+ t.string "zip_code"
30
+ t.string "city"
31
+ t.string "state"
32
+ t.string "phone"
33
+ t.string "email"
34
+ t.string "profession"
35
+ end
36
+
37
+ create_table "search_terms", force: :cascade do |t|
38
+ t.string "term"
39
+ t.string "source"
40
+ t.integer "findable_id"
41
+ t.string "findable_type"
42
+ end
43
+
44
+ add_index "search_terms", ["source"], name: "index_search_terms_on_source"
45
+ add_index "search_terms", ["term"], name: "index_search_terms_on_term"
46
+
47
+ end
Binary file
@@ -0,0 +1,340 @@
1
+  (1.8ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL) 
2
+  (0.4ms) select sqlite_version(*)
3
+  (1.2ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
4
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
5
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
6
+  (0.9ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
7
+  (0.0ms) select sqlite_version(*)
8
+  (0.8ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
9
+  (0.1ms) SELECT version FROM "schema_migrations"
10
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('0')
11
+  (0.4ms) begin transaction
12
+ SQL (0.1ms) DELETE FROM "search_terms" WHERE (findable_type = 'Employee')
13
+ SQLite3::SQLException: no such table: search_terms: DELETE FROM "search_terms" WHERE (findable_type = 'Employee')
14
+  (0.1ms) rollback transaction
15
+ ActiveRecord::SchemaMigration Load (0.4ms) SELECT "schema_migrations".* FROM "schema_migrations"
16
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
17
+  (0.8ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL) 
18
+  (0.0ms) select sqlite_version(*)
19
+  (0.7ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
20
+  (0.1ms) SELECT version FROM "schema_migrations"
21
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('0')
22
+  (0.2ms) begin transaction
23
+ SQL (0.1ms) DELETE FROM "search_terms" WHERE (findable_type = 'Employee')
24
+ SQLite3::SQLException: no such table: search_terms: DELETE FROM "search_terms" WHERE (findable_type = 'Employee')
25
+  (0.0ms) rollback transaction
26
+  (0.1ms) SELECT version FROM "schema_migrations"
27
+  (1.8ms) INSERT INTO "schema_migrations" (version) VALUES ('0')
28
+  (0.2ms) begin transaction
29
+ SQL (0.1ms) DELETE FROM "search_terms" WHERE (findable_type = 'Employee')
30
+ SQLite3::SQLException: no such table: search_terms: DELETE FROM "search_terms" WHERE (findable_type = 'Employee')
31
+  (0.0ms) rollback transaction
32
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
33
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
34
+  (0.8ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL) 
35
+  (0.1ms) select sqlite_version(*)
36
+  (0.7ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
37
+  (0.1ms) SELECT version FROM "schema_migrations"
38
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('0')
39
+  (0.2ms) begin transaction
40
+ SQL (0.1ms) DELETE FROM "search_terms" WHERE (findable_type = 'Employee')
41
+ SQLite3::SQLException: no such table: search_terms: DELETE FROM "search_terms" WHERE (findable_type = 'Employee')
42
+  (0.0ms) rollback transaction
43
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
44
+ Migrating to CreateBaseTables (20151013022315)
45
+  (0.1ms) begin transaction
46
+  (1.0ms) CREATE TABLE "employees" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar, "last_name" varchar, "address" varchar, "zip_code" varchar, "city" varchar, "state" varchar, "phone" varchar, "email" varchar, "profession" varchar) 
47
+  (0.1ms) CREATE TABLE "dossiers" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "filename" varchar)
48
+  (0.1ms) CREATE TABLE "search_terms" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "term" varchar, "source" varchar, "findable_id" integer, "findable_type" varchar) 
49
+  (0.0ms) select sqlite_version(*)
50
+  (0.1ms) CREATE INDEX "index_search_terms_on_term" ON "search_terms" ("term")
51
+  (0.1ms) SELECT sql
52
+ FROM sqlite_master
53
+ WHERE name='index_search_terms_on_term' AND type='index'
54
+ UNION ALL
55
+ SELECT sql
56
+ FROM sqlite_temp_master
57
+ WHERE name='index_search_terms_on_term' AND type='index'
58
+
59
+  (0.1ms) CREATE INDEX "index_search_terms_on_source" ON "search_terms" ("source")
60
+ SQL (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20151013022315"]]
61
+  (0.8ms) commit transaction
62
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
63
+  (0.1ms)  SELECT sql
64
+ FROM sqlite_master
65
+ WHERE name='index_search_terms_on_source' AND type='index'
66
+ UNION ALL
67
+ SELECT sql
68
+ FROM sqlite_temp_master
69
+ WHERE name='index_search_terms_on_source' AND type='index'
70
+ 
71
+  (0.1ms) SELECT sql
72
+ FROM sqlite_master
73
+ WHERE name='index_search_terms_on_term' AND type='index'
74
+ UNION ALL
75
+ SELECT sql
76
+ FROM sqlite_temp_master
77
+ WHERE name='index_search_terms_on_term' AND type='index'
78
+
79
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
80
+  (0.1ms) SELECT sql
81
+ FROM sqlite_master
82
+ WHERE name='index_search_terms_on_source' AND type='index'
83
+ UNION ALL
84
+ SELECT sql
85
+ FROM sqlite_temp_master
86
+ WHERE name='index_search_terms_on_source' AND type='index'
87
+
88
+  (0.1ms)  SELECT sql
89
+ FROM sqlite_master
90
+ WHERE name='index_search_terms_on_term' AND type='index'
91
+ UNION ALL
92
+ SELECT sql
93
+ FROM sqlite_temp_master
94
+ WHERE name='index_search_terms_on_term' AND type='index'
95
+ 
96
+  (0.8ms) CREATE TABLE "dossiers" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "filename" varchar)
97
+  (0.7ms) CREATE TABLE "employees" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "first_name" varchar, "last_name" varchar, "address" varchar, "zip_code" varchar, "city" varchar, "state" varchar, "phone" varchar, "email" varchar, "profession" varchar) 
98
+  (0.8ms) CREATE TABLE "search_terms" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "term" varchar, "source" varchar, "findable_id" integer, "findable_type" varchar)
99
+  (0.0ms) select sqlite_version(*)
100
+  (0.9ms) CREATE INDEX "index_search_terms_on_source" ON "search_terms" ("source")
101
+  (0.1ms)  SELECT sql
102
+ FROM sqlite_master
103
+ WHERE name='index_search_terms_on_source' AND type='index'
104
+ UNION ALL
105
+ SELECT sql
106
+ FROM sqlite_temp_master
107
+ WHERE name='index_search_terms_on_source' AND type='index'
108
+ 
109
+  (0.7ms) CREATE INDEX "index_search_terms_on_term" ON "search_terms" ("term")
110
+  (0.9ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL) 
111
+  (0.8ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
112
+  (0.1ms) SELECT version FROM "schema_migrations"
113
+  (0.7ms) INSERT INTO "schema_migrations" (version) VALUES ('20151013022315')
114
+  (0.2ms) begin transaction
115
+ SQL (0.5ms) DELETE FROM "search_terms" WHERE (findable_type = 'Employee')
116
+ Employee Load (0.1ms) SELECT "employees".* FROM "employees"
117
+  (0.1ms) commit transaction
118
+  (0.1ms) begin transaction
119
+ SQL (0.2ms) DELETE FROM "search_terms" WHERE (findable_type = 'Employee')
120
+ Employee Load (0.1ms) SELECT "employees".* FROM "employees"
121
+  (0.1ms) commit transaction
122
+  (0.0ms) begin transaction
123
+ SQL (0.3ms) INSERT INTO "employees" ("first_name", "last_name", "address", "zip_code", "city", "phone", "email", "profession") VALUES (?, ?, ?, ?, ?, ?, ?, ?) [["first_name", "Andreas"], ["last_name", "Baumgart"], ["address", "Adalbertstr. 8"], ["zip_code", "10999"], ["city", "Berlin"], ["phone", "00491731234567"], ["email", "andreas@polycast.de"], ["profession", "Web Developer"]]
124
+ SQL (0.2ms) DELETE FROM "search_terms" WHERE "search_terms"."findable_id" = ? AND "search_terms"."findable_type" = ? AND "search_terms"."source" IN ('first_name', 'last_name', 'profession', 'address', 'zip_code', 'city') [["findable_id", 1], ["findable_type", "Employee"]]
125
+ SQL (0.1ms) INSERT INTO "search_terms" ("findable_id", "findable_type", "term", "source") VALUES (?, ?, ?, ?) [["findable_id", 1], ["findable_type", "Employee"], ["term", "Andreas"], ["source", "first_name"]]
126
+ SQL (0.0ms) INSERT INTO "search_terms" ("findable_id", "findable_type", "term", "source") VALUES (?, ?, ?, ?) [["findable_id", 1], ["findable_type", "Employee"], ["term", "Baumgart"], ["source", "last_name"]]
127
+ SQL (0.0ms) INSERT INTO "search_terms" ("findable_id", "findable_type", "term", "source") VALUES (?, ?, ?, ?) [["findable_id", 1], ["findable_type", "Employee"], ["term", "Web"], ["source", "profession"]]
128
+ SQL (0.0ms) INSERT INTO "search_terms" ("findable_id", "findable_type", "term", "source") VALUES (?, ?, ?, ?) [["findable_id", 1], ["findable_type", "Employee"], ["term", "Developer"], ["source", "profession"]]
129
+ SQL (0.0ms) INSERT INTO "search_terms" ("findable_id", "findable_type", "term", "source") VALUES (?, ?, ?, ?) [["findable_id", 1], ["findable_type", "Employee"], ["term", "Adalbertstr"], ["source", "address"]]
130
+ SQL (0.0ms) INSERT INTO "search_terms" ("findable_id", "findable_type", "term", "source") VALUES (?, ?, ?, ?) [["findable_id", 1], ["findable_type", "Employee"], ["term", "8"], ["source", "address"]]
131
+ SQL (0.0ms) INSERT INTO "search_terms" ("findable_id", "findable_type", "term", "source") VALUES (?, ?, ?, ?) [["findable_id", 1], ["findable_type", "Employee"], ["term", "10999"], ["source", "zip_code"]]
132
+ SQL (0.0ms) INSERT INTO "search_terms" ("findable_id", "findable_type", "term", "source") VALUES (?, ?, ?, ?) [["findable_id", 1], ["findable_type", "Employee"], ["term", "Berlin"], ["source", "city"]]
133
+  (0.8ms) commit transaction
134
+ Employee Load (0.4ms)  SELECT SUM(e1.match_score) AS score, e1.*
135
+ FROM (
136
+ SELECT
137
+ CASE
138
+ WHEN search_terms.source = 'first_name' then 10
139
+ WHEN search_terms.source = 'last_name' then 10
140
+ WHEN search_terms.source = 'profession' then 5
141
+ WHEN search_terms.source = 'address' then 1
142
+ WHEN search_terms.source = 'zip_code' then 1
143
+ WHEN search_terms.source = 'city' then 1
144
+ ELSE 0
145
+ END AS match_score,
146
+ employees.*
147
+ FROM employees
148
+ JOIN search_terms
149
+ ON search_terms.findable_id = employees.id
150
+ AND search_terms.findable_type = 'Employee'
151
+ WHERE search_terms.term LIKE 'Andreas%'
152
+ ) AS e1
153
+ GROUP BY e1.id
154
+ ORDER BY score DESC
155
+ 
156
+ Employee Load (0.5ms) SELECT SUM(e1.match_score) AS score, e1.*
157
+ FROM (
158
+ SELECT
159
+ CASE
160
+ WHEN search_terms.source = 'first_name' then 10
161
+ WHEN search_terms.source = 'last_name' then 10
162
+ WHEN search_terms.source = 'profession' then 5
163
+ WHEN search_terms.source = 'address' then 1
164
+ WHEN search_terms.source = 'zip_code' then 1
165
+ WHEN search_terms.source = 'city' then 1
166
+ ELSE 0
167
+ END AS match_score,
168
+ employees.*
169
+ FROM employees
170
+ JOIN search_terms
171
+ ON search_terms.findable_id = employees.id
172
+ AND search_terms.findable_type = 'Employee'
173
+ WHERE search_terms.term LIKE 'Andreas%'
174
+ ) AS e1
175
+ GROUP BY e1.id
176
+ ORDER BY score DESC
177
+
178
+ Employee Load (1.3ms)  SELECT SUM(e1.match_score) AS score, e1.*
179
+ FROM (
180
+ SELECT
181
+ CASE
182
+ WHEN search_terms.source = 'first_name' then 10
183
+ WHEN search_terms.source = 'last_name' then 10
184
+ WHEN search_terms.source = 'profession' then 5
185
+ WHEN search_terms.source = 'address' then 1
186
+ WHEN search_terms.source = 'zip_code' then 1
187
+ WHEN search_terms.source = 'city' then 1
188
+ ELSE 0
189
+ END AS match_score,
190
+ employees.*
191
+ FROM employees
192
+ JOIN search_terms
193
+ ON search_terms.findable_id = employees.id
194
+ AND search_terms.findable_type = 'Employee'
195
+ WHERE search_terms.term LIKE 'Andreas%'
196
+ ) AS e1
197
+ GROUP BY e1.id
198
+ ORDER BY score DESC
199
+ 
200
+ Employee Load (0.5ms) SELECT SUM(e1.match_score) AS score, e1.*
201
+ FROM (
202
+ SELECT
203
+ CASE
204
+ WHEN search_terms.source = 'first_name' then 10
205
+ WHEN search_terms.source = 'last_name' then 10
206
+ WHEN search_terms.source = 'profession' then 5
207
+ WHEN search_terms.source = 'address' then 1
208
+ WHEN search_terms.source = 'zip_code' then 1
209
+ WHEN search_terms.source = 'city' then 1
210
+ ELSE 0
211
+ END AS match_score,
212
+ employees.*
213
+ FROM employees
214
+ JOIN search_terms
215
+ ON search_terms.findable_id = employees.id
216
+ AND search_terms.findable_type = 'Employee'
217
+ WHERE search_terms.term LIKE 'Andreas%'
218
+ ) AS e1
219
+ GROUP BY e1.id
220
+ ORDER BY score DESC
221
+
222
+ Employee Load (1.1ms)  SELECT SUM(e1.match_score) AS score, e1.*
223
+ FROM (
224
+ SELECT
225
+ CASE
226
+ WHEN search_terms.source = 'first_name' then 10
227
+ WHEN search_terms.source = 'last_name' then 10
228
+ WHEN search_terms.source = 'profession' then 5
229
+ WHEN search_terms.source = 'address' then 1
230
+ WHEN search_terms.source = 'zip_code' then 1
231
+ WHEN search_terms.source = 'city' then 1
232
+ ELSE 0
233
+ END AS match_score,
234
+ employees.*
235
+ FROM employees
236
+ JOIN search_terms
237
+ ON search_terms.findable_id = employees.id
238
+ AND search_terms.findable_type = 'Employee'
239
+ WHERE search_terms.term LIKE 'Andreas%'
240
+ ) AS e1
241
+ GROUP BY e1.id
242
+ ORDER BY score DESC
243
+ 
244
+ Employee Load (1.2ms)  SELECT SUM(e1.match_score) AS score, e1.*
245
+ FROM (
246
+ SELECT
247
+ CASE
248
+ WHEN search_terms.source = 'first_name' then 10
249
+ WHEN search_terms.source = 'last_name' then 10
250
+ WHEN search_terms.source = 'profession' then 5
251
+ WHEN search_terms.source = 'address' then 1
252
+ WHEN search_terms.source = 'zip_code' then 1
253
+ WHEN search_terms.source = 'city' then 1
254
+ ELSE 0
255
+ END AS match_score,
256
+ employees.*
257
+ FROM employees
258
+ JOIN search_terms
259
+ ON search_terms.findable_id = employees.id
260
+ AND search_terms.findable_type = 'Employee'
261
+ WHERE search_terms.term LIKE 'Andreas%'
262
+ ) AS e1
263
+ GROUP BY e1.id
264
+ ORDER BY score DESC
265
+ 
266
+  (1.0ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL) 
267
+  (0.1ms) select sqlite_version(*)
268
+  (0.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
269
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
270
+ Migrating to CreateBaseTables (20151013022315)
271
+  (0.0ms) begin transaction
272
+  (0.3ms) CREATE TABLE "companies" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar)
273
+  (0.1ms) CREATE TABLE "employees" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "company_id" integer, "first_name" varchar, "last_name" varchar, "address" varchar, "zip_code" varchar, "city" varchar, "state" varchar, "phone" varchar, "email" varchar, "profession" varchar) 
274
+  (0.1ms) CREATE TABLE "dossiers" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "filename" varchar)
275
+  (0.1ms) CREATE TABLE "search_terms" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "term" varchar, "source" varchar, "findable_id" integer, "findable_type" varchar) 
276
+  (0.1ms) CREATE INDEX "index_search_terms_on_term" ON "search_terms" ("term")
277
+  (0.1ms)  SELECT sql
278
+ FROM sqlite_master
279
+ WHERE name='index_search_terms_on_term' AND type='index'
280
+ UNION ALL
281
+ SELECT sql
282
+ FROM sqlite_temp_master
283
+ WHERE name='index_search_terms_on_term' AND type='index'
284
+ 
285
+  (0.1ms) CREATE INDEX "index_search_terms_on_source" ON "search_terms" ("source")
286
+ SQL (0.1ms) INSERT INTO "schema_migrations" ("version") VALUES (?) [["version", "20151013022315"]]
287
+  (0.9ms) commit transaction
288
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
289
+  (0.1ms) SELECT sql
290
+ FROM sqlite_master
291
+ WHERE name='index_search_terms_on_source' AND type='index'
292
+ UNION ALL
293
+ SELECT sql
294
+ FROM sqlite_temp_master
295
+ WHERE name='index_search_terms_on_source' AND type='index'
296
+
297
+  (0.1ms)  SELECT sql
298
+ FROM sqlite_master
299
+ WHERE name='index_search_terms_on_term' AND type='index'
300
+ UNION ALL
301
+ SELECT sql
302
+ FROM sqlite_temp_master
303
+ WHERE name='index_search_terms_on_term' AND type='index'
304
+ 
305
+ ActiveRecord::SchemaMigration Load (0.1ms) SELECT "schema_migrations".* FROM "schema_migrations"
306
+  (0.1ms)  SELECT sql
307
+ FROM sqlite_master
308
+ WHERE name='index_search_terms_on_source' AND type='index'
309
+ UNION ALL
310
+ SELECT sql
311
+ FROM sqlite_temp_master
312
+ WHERE name='index_search_terms_on_source' AND type='index'
313
+ 
314
+  (0.1ms) SELECT sql
315
+ FROM sqlite_master
316
+ WHERE name='index_search_terms_on_term' AND type='index'
317
+ UNION ALL
318
+ SELECT sql
319
+ FROM sqlite_temp_master
320
+ WHERE name='index_search_terms_on_term' AND type='index'
321
+
322
+  (0.9ms) CREATE TABLE "companies" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar) 
323
+  (0.7ms) CREATE TABLE "dossiers" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "filename" varchar)
324
+  (0.7ms) CREATE TABLE "employees" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "company_id" integer, "first_name" varchar, "last_name" varchar, "address" varchar, "zip_code" varchar, "city" varchar, "state" varchar, "phone" varchar, "email" varchar, "profession" varchar) 
325
+  (0.6ms) CREATE TABLE "search_terms" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "term" varchar, "source" varchar, "findable_id" integer, "findable_type" varchar)
326
+  (0.0ms) select sqlite_version(*)
327
+  (0.9ms) CREATE INDEX "index_search_terms_on_source" ON "search_terms" ("source")
328
+  (0.1ms)  SELECT sql
329
+ FROM sqlite_master
330
+ WHERE name='index_search_terms_on_source' AND type='index'
331
+ UNION ALL
332
+ SELECT sql
333
+ FROM sqlite_temp_master
334
+ WHERE name='index_search_terms_on_source' AND type='index'
335
+ 
336
+  (0.9ms) CREATE INDEX "index_search_terms_on_term" ON "search_terms" ("term")
337
+  (0.9ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL) 
338
+  (0.9ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
339
+  (0.1ms) SELECT version FROM "schema_migrations"
340
+  (0.9ms) INSERT INTO "schema_migrations" (version) VALUES ('20151013022315')