thinking-sphinx 2.1.0 → 3.0.0.pre

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.
Files changed (352) hide show
  1. data/.gitignore +8 -0
  2. data/.travis.yml +13 -0
  3. data/Appraisals +7 -0
  4. data/Gemfile +10 -0
  5. data/HISTORY +2 -267
  6. data/LICENCE +1 -1
  7. data/README.textile +194 -226
  8. data/Rakefile +24 -0
  9. data/gemfiles/.gitignore +1 -0
  10. data/gemfiles/rails_3_1.gemfile +11 -0
  11. data/gemfiles/rails_3_2.gemfile +11 -0
  12. data/lib/thinking-sphinx.rb +1 -1
  13. data/lib/thinking_sphinx.rb +34 -292
  14. data/lib/thinking_sphinx/active_record.rb +22 -383
  15. data/lib/thinking_sphinx/active_record/association.rb +9 -0
  16. data/lib/thinking_sphinx/active_record/association_proxy.rb +68 -0
  17. data/lib/thinking_sphinx/active_record/associations.rb +68 -0
  18. data/lib/thinking_sphinx/active_record/attribute.rb +20 -0
  19. data/lib/thinking_sphinx/active_record/attribute/sphinx_presenter.rb +32 -0
  20. data/lib/thinking_sphinx/active_record/attribute/type.rb +79 -0
  21. data/lib/thinking_sphinx/active_record/attribute/values.rb +18 -0
  22. data/lib/thinking_sphinx/active_record/base.rb +36 -0
  23. data/lib/thinking_sphinx/active_record/callbacks/delete_callbacks.rb +31 -0
  24. data/lib/thinking_sphinx/active_record/callbacks/delta_callbacks.rb +55 -0
  25. data/lib/thinking_sphinx/active_record/callbacks/update_callbacks.rb +59 -0
  26. data/lib/thinking_sphinx/active_record/column.rb +30 -0
  27. data/lib/thinking_sphinx/active_record/database_adapters.rb +51 -0
  28. data/lib/thinking_sphinx/active_record/database_adapters/abstract_adapter.rb +13 -0
  29. data/lib/thinking_sphinx/active_record/database_adapters/mysql_adapter.rb +23 -0
  30. data/lib/thinking_sphinx/active_record/database_adapters/postgresql_adapter.rb +25 -0
  31. data/lib/thinking_sphinx/active_record/field.rb +11 -0
  32. data/lib/thinking_sphinx/active_record/index.rb +55 -0
  33. data/lib/thinking_sphinx/active_record/interpreter.rb +47 -0
  34. data/lib/thinking_sphinx/active_record/log_subscriber.rb +10 -58
  35. data/lib/thinking_sphinx/active_record/property.rb +28 -0
  36. data/lib/thinking_sphinx/active_record/property_sql_presenter.rb +60 -0
  37. data/lib/thinking_sphinx/active_record/sql_builder.rb +159 -0
  38. data/lib/thinking_sphinx/active_record/sql_source.rb +138 -0
  39. data/lib/thinking_sphinx/active_record/sql_source/template.rb +46 -0
  40. data/lib/thinking_sphinx/batched_search.rb +26 -0
  41. data/lib/thinking_sphinx/callbacks.rb +15 -0
  42. data/lib/thinking_sphinx/configuration.rb +80 -331
  43. data/lib/thinking_sphinx/configuration/consistent_ids.rb +31 -0
  44. data/lib/thinking_sphinx/configuration/defaults.rb +5 -0
  45. data/lib/thinking_sphinx/core.rb +6 -0
  46. data/lib/thinking_sphinx/core/index.rb +68 -0
  47. data/lib/thinking_sphinx/core/interpreter.rb +19 -0
  48. data/lib/thinking_sphinx/deltas.rb +35 -26
  49. data/lib/thinking_sphinx/deltas/default_delta.rb +56 -56
  50. data/lib/thinking_sphinx/excerpter.rb +23 -21
  51. data/lib/thinking_sphinx/facet.rb +22 -127
  52. data/lib/thinking_sphinx/facet_search.rb +95 -162
  53. data/lib/thinking_sphinx/index.rb +39 -143
  54. data/lib/thinking_sphinx/index_set.rb +51 -0
  55. data/lib/thinking_sphinx/masks.rb +8 -0
  56. data/lib/thinking_sphinx/masks/group_enumerators_mask.rb +23 -0
  57. data/lib/thinking_sphinx/masks/pagination_mask.rb +60 -0
  58. data/lib/thinking_sphinx/masks/scopes_mask.rb +35 -0
  59. data/lib/thinking_sphinx/masks/weight_enumerator_mask.rb +11 -0
  60. data/lib/thinking_sphinx/middlewares.rb +36 -0
  61. data/lib/thinking_sphinx/middlewares/active_record_translator.rb +73 -0
  62. data/lib/thinking_sphinx/middlewares/geographer.rb +53 -0
  63. data/lib/thinking_sphinx/middlewares/glazier.rb +39 -0
  64. data/lib/thinking_sphinx/middlewares/ids_only.rb +13 -0
  65. data/lib/thinking_sphinx/middlewares/inquirer.rb +62 -0
  66. data/lib/thinking_sphinx/middlewares/middleware.rb +9 -0
  67. data/lib/thinking_sphinx/middlewares/sphinxql.rb +149 -0
  68. data/lib/thinking_sphinx/middlewares/stale_id_checker.rb +45 -0
  69. data/lib/thinking_sphinx/middlewares/stale_id_filter.rb +46 -0
  70. data/lib/thinking_sphinx/panes.rb +8 -0
  71. data/lib/thinking_sphinx/panes/attributes_pane.rb +9 -0
  72. data/lib/thinking_sphinx/panes/distance_pane.rb +13 -0
  73. data/lib/thinking_sphinx/panes/excerpts_pane.rb +37 -0
  74. data/lib/thinking_sphinx/panes/weight_pane.rb +9 -0
  75. data/lib/thinking_sphinx/railtie.rb +6 -40
  76. data/lib/thinking_sphinx/rake_interface.rb +47 -0
  77. data/lib/thinking_sphinx/real_time.rb +11 -0
  78. data/lib/thinking_sphinx/real_time/attribute.rb +5 -0
  79. data/lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb +48 -0
  80. data/lib/thinking_sphinx/real_time/field.rb +3 -0
  81. data/lib/thinking_sphinx/real_time/index.rb +47 -0
  82. data/lib/thinking_sphinx/real_time/index/template.rb +33 -0
  83. data/lib/thinking_sphinx/real_time/interpreter.rb +23 -0
  84. data/lib/thinking_sphinx/real_time/property.rb +16 -0
  85. data/lib/thinking_sphinx/scopes.rb +22 -0
  86. data/lib/thinking_sphinx/search.rb +90 -1028
  87. data/lib/thinking_sphinx/search/batch_inquirer.rb +27 -0
  88. data/lib/thinking_sphinx/search/context.rb +26 -0
  89. data/lib/thinking_sphinx/search/glaze.rb +32 -0
  90. data/lib/thinking_sphinx/search/merger.rb +24 -0
  91. data/lib/thinking_sphinx/search/query.rb +43 -0
  92. data/lib/thinking_sphinx/search/stale_ids_exception.rb +11 -0
  93. data/lib/thinking_sphinx/search/translator.rb +50 -0
  94. data/lib/thinking_sphinx/tasks.rb +22 -125
  95. data/lib/thinking_sphinx/test.rb +9 -19
  96. data/sketchpad.rb +58 -0
  97. data/spec/acceptance/association_scoping_spec.rb +23 -0
  98. data/spec/acceptance/attribute_access_spec.rb +39 -0
  99. data/spec/acceptance/attribute_updates_spec.rb +16 -0
  100. data/spec/acceptance/batch_searching_spec.rb +21 -0
  101. data/spec/acceptance/big_integers_spec.rb +27 -0
  102. data/spec/acceptance/excerpts_spec.rb +14 -0
  103. data/spec/acceptance/facets_spec.rb +122 -0
  104. data/spec/acceptance/geosearching_spec.rb +39 -0
  105. data/spec/acceptance/grouping_by_attributes_spec.rb +77 -0
  106. data/spec/acceptance/paginating_search_results_spec.rb +24 -0
  107. data/spec/acceptance/remove_deleted_records_spec.rb +23 -0
  108. data/spec/acceptance/search_counts_spec.rb +18 -0
  109. data/spec/acceptance/search_for_just_ids_spec.rb +19 -0
  110. data/spec/acceptance/searching_across_models_spec.rb +28 -0
  111. data/spec/acceptance/searching_on_fields_spec.rb +56 -0
  112. data/spec/acceptance/searching_with_filters_spec.rb +109 -0
  113. data/spec/acceptance/searching_with_sti_spec.rb +55 -0
  114. data/spec/acceptance/searching_within_a_model_spec.rb +52 -0
  115. data/spec/acceptance/sorting_search_results_spec.rb +41 -0
  116. data/spec/acceptance/spec_helper.rb +4 -0
  117. data/spec/acceptance/specifying_sql_spec.rb +62 -0
  118. data/spec/acceptance/sphinx_scopes_spec.rb +49 -0
  119. data/spec/acceptance/sql_deltas_spec.rb +43 -0
  120. data/spec/acceptance/support/database_cleaner.rb +11 -0
  121. data/spec/acceptance/support/sphinx_controller.rb +39 -0
  122. data/spec/acceptance/support/sphinx_helpers.rb +24 -0
  123. data/spec/acceptance/suspended_deltas_spec.rb +20 -0
  124. data/spec/internal/.gitignore +1 -0
  125. data/spec/internal/app/indices/animal_index.rb +3 -0
  126. data/spec/internal/app/indices/article_index.rb +24 -0
  127. data/spec/internal/app/indices/book_index.rb +8 -0
  128. data/spec/internal/app/indices/city_index.rb +6 -0
  129. data/spec/internal/app/indices/product_index.rb +3 -0
  130. data/spec/internal/app/indices/tee_index.rb +4 -0
  131. data/spec/internal/app/indices/user_index.rb +5 -0
  132. data/spec/internal/app/models/animal.rb +2 -0
  133. data/spec/internal/app/models/article.rb +5 -0
  134. data/spec/internal/app/models/bird.rb +2 -0
  135. data/spec/internal/app/models/book.rb +11 -0
  136. data/spec/internal/app/models/city.rb +2 -0
  137. data/spec/internal/app/models/colour.rb +3 -0
  138. data/spec/internal/app/models/flightless_bird.rb +2 -0
  139. data/spec/internal/app/models/mammal.rb +2 -0
  140. data/spec/internal/app/models/product.rb +3 -0
  141. data/spec/internal/app/models/tag.rb +4 -0
  142. data/{features/thinking_sphinx → spec/internal/app}/models/tagging.rb +1 -1
  143. data/spec/internal/app/models/tee.rb +3 -0
  144. data/spec/internal/app/models/tweet.rb +3 -0
  145. data/spec/internal/app/models/user.rb +3 -0
  146. data/spec/internal/config/database.yml +5 -0
  147. data/spec/internal/db/schema.rb +65 -0
  148. data/spec/internal/log/.gitignore +1 -0
  149. data/spec/spec_helper.rb +8 -49
  150. data/spec/support/sphinx_yaml_helpers.rb +9 -0
  151. data/spec/thinking_sphinx/active_record/association_spec.rb +12 -0
  152. data/spec/thinking_sphinx/active_record/associations_spec.rb +184 -0
  153. data/spec/thinking_sphinx/active_record/attribute/type_spec.rb +147 -0
  154. data/spec/thinking_sphinx/active_record/base_spec.rb +61 -0
  155. data/spec/thinking_sphinx/active_record/callbacks/delete_callbacks_spec.rb +80 -0
  156. data/spec/thinking_sphinx/active_record/callbacks/delta_callbacks_spec.rb +147 -0
  157. data/spec/thinking_sphinx/active_record/callbacks/update_callbacks_spec.rb +69 -0
  158. data/spec/thinking_sphinx/active_record/column_spec.rb +47 -0
  159. data/spec/thinking_sphinx/active_record/database_adapters/abstract_adapter_spec.rb +31 -0
  160. data/spec/thinking_sphinx/active_record/database_adapters/mysql_adapter_spec.rb +43 -0
  161. data/spec/thinking_sphinx/active_record/database_adapters/postgresql_adapter_spec.rb +45 -0
  162. data/spec/thinking_sphinx/active_record/database_adapters_spec.rb +108 -0
  163. data/spec/thinking_sphinx/active_record/field_spec.rb +36 -0
  164. data/spec/thinking_sphinx/active_record/index_spec.rb +208 -0
  165. data/spec/thinking_sphinx/active_record/interpreter_spec.rb +293 -0
  166. data/spec/thinking_sphinx/active_record/property_sql_presenter_spec.rb +162 -0
  167. data/spec/thinking_sphinx/active_record/sql_builder_spec.rb +666 -0
  168. data/spec/thinking_sphinx/active_record/sql_source_spec.rb +401 -0
  169. data/spec/thinking_sphinx/configuration_spec.rb +264 -171
  170. data/spec/thinking_sphinx/deltas/default_delta_spec.rb +116 -0
  171. data/spec/thinking_sphinx/deltas_spec.rb +58 -0
  172. data/spec/thinking_sphinx/excerpter_spec.rb +40 -38
  173. data/spec/thinking_sphinx/facet_search_spec.rb +49 -151
  174. data/spec/thinking_sphinx/index_set_spec.rb +68 -0
  175. data/spec/thinking_sphinx/index_spec.rb +91 -155
  176. data/spec/thinking_sphinx/masks/pagination_mask_spec.rb +121 -0
  177. data/spec/thinking_sphinx/masks/scopes_mask_spec.rb +68 -0
  178. data/spec/thinking_sphinx/middlewares/active_record_translator_spec.rb +132 -0
  179. data/spec/thinking_sphinx/middlewares/geographer_spec.rb +89 -0
  180. data/spec/thinking_sphinx/middlewares/glazier_spec.rb +62 -0
  181. data/spec/thinking_sphinx/middlewares/inquirer_spec.rb +55 -0
  182. data/spec/thinking_sphinx/middlewares/sphinxql_spec.rb +271 -0
  183. data/spec/thinking_sphinx/middlewares/stale_id_checker_spec.rb +47 -0
  184. data/spec/thinking_sphinx/middlewares/stale_id_filter_spec.rb +91 -0
  185. data/spec/thinking_sphinx/panes/attributes_pane_spec.rb +21 -0
  186. data/spec/thinking_sphinx/panes/distance_pane_spec.rb +41 -0
  187. data/spec/thinking_sphinx/panes/excerpts_pane_spec.rb +53 -0
  188. data/spec/thinking_sphinx/panes/weight_pane_spec.rb +20 -0
  189. data/spec/thinking_sphinx/rake_interface_spec.rb +147 -0
  190. data/spec/thinking_sphinx/real_time/attribute_spec.rb +62 -0
  191. data/spec/thinking_sphinx/real_time/callbacks/real_time_callbacks_spec.rb +76 -0
  192. data/spec/thinking_sphinx/real_time/field_spec.rb +54 -0
  193. data/spec/thinking_sphinx/real_time/index_spec.rb +154 -0
  194. data/spec/thinking_sphinx/real_time/interpreter_spec.rb +147 -0
  195. data/spec/thinking_sphinx/scopes_spec.rb +38 -0
  196. data/spec/thinking_sphinx/search/glaze_spec.rb +55 -0
  197. data/spec/thinking_sphinx/search/query_spec.rb +46 -0
  198. data/spec/thinking_sphinx/search_spec.rb +65 -1357
  199. data/spec/thinking_sphinx_spec.rb +19 -182
  200. data/thinking-sphinx.gemspec +33 -0
  201. metadata +318 -431
  202. data/features/abstract_inheritance.feature +0 -10
  203. data/features/alternate_primary_key.feature +0 -27
  204. data/features/attribute_transformation.feature +0 -22
  205. data/features/attribute_updates.feature +0 -79
  206. data/features/deleting_instances.feature +0 -70
  207. data/features/direct_attributes.feature +0 -11
  208. data/features/excerpts.feature +0 -21
  209. data/features/extensible_delta_indexing.feature +0 -9
  210. data/features/facets.feature +0 -88
  211. data/features/facets_across_model.feature +0 -29
  212. data/features/field_sorting.feature +0 -18
  213. data/features/handling_edits.feature +0 -97
  214. data/features/retry_stale_indexes.feature +0 -24
  215. data/features/searching_across_models.feature +0 -20
  216. data/features/searching_by_index.feature +0 -41
  217. data/features/searching_by_model.feature +0 -175
  218. data/features/searching_with_find_arguments.feature +0 -56
  219. data/features/sphinx_detection.feature +0 -25
  220. data/features/sphinx_scopes.feature +0 -68
  221. data/features/step_definitions/alpha_steps.rb +0 -16
  222. data/features/step_definitions/beta_steps.rb +0 -7
  223. data/features/step_definitions/common_steps.rb +0 -205
  224. data/features/step_definitions/extensible_delta_indexing_steps.rb +0 -7
  225. data/features/step_definitions/facet_steps.rb +0 -96
  226. data/features/step_definitions/find_arguments_steps.rb +0 -36
  227. data/features/step_definitions/gamma_steps.rb +0 -15
  228. data/features/step_definitions/scope_steps.rb +0 -19
  229. data/features/step_definitions/search_steps.rb +0 -94
  230. data/features/step_definitions/sphinx_steps.rb +0 -35
  231. data/features/sti_searching.feature +0 -19
  232. data/features/support/env.rb +0 -24
  233. data/features/support/lib/generic_delta_handler.rb +0 -8
  234. data/features/thinking_sphinx/database.example.yml +0 -3
  235. data/features/thinking_sphinx/db/.gitignore +0 -1
  236. data/features/thinking_sphinx/db/fixtures/alphas.rb +0 -8
  237. data/features/thinking_sphinx/db/fixtures/authors.rb +0 -1
  238. data/features/thinking_sphinx/db/fixtures/betas.rb +0 -11
  239. data/features/thinking_sphinx/db/fixtures/boxes.rb +0 -9
  240. data/features/thinking_sphinx/db/fixtures/categories.rb +0 -1
  241. data/features/thinking_sphinx/db/fixtures/cats.rb +0 -3
  242. data/features/thinking_sphinx/db/fixtures/comments.rb +0 -24
  243. data/features/thinking_sphinx/db/fixtures/developers.rb +0 -31
  244. data/features/thinking_sphinx/db/fixtures/dogs.rb +0 -3
  245. data/features/thinking_sphinx/db/fixtures/extensible_betas.rb +0 -10
  246. data/features/thinking_sphinx/db/fixtures/foxes.rb +0 -3
  247. data/features/thinking_sphinx/db/fixtures/gammas.rb +0 -10
  248. data/features/thinking_sphinx/db/fixtures/music.rb +0 -4
  249. data/features/thinking_sphinx/db/fixtures/people.rb +0 -1001
  250. data/features/thinking_sphinx/db/fixtures/post_keywords.txt +0 -1
  251. data/features/thinking_sphinx/db/fixtures/posts.rb +0 -10
  252. data/features/thinking_sphinx/db/fixtures/robots.rb +0 -8
  253. data/features/thinking_sphinx/db/fixtures/tags.rb +0 -27
  254. data/features/thinking_sphinx/db/migrations/create_alphas.rb +0 -8
  255. data/features/thinking_sphinx/db/migrations/create_animals.rb +0 -5
  256. data/features/thinking_sphinx/db/migrations/create_authors.rb +0 -3
  257. data/features/thinking_sphinx/db/migrations/create_authors_posts.rb +0 -6
  258. data/features/thinking_sphinx/db/migrations/create_betas.rb +0 -5
  259. data/features/thinking_sphinx/db/migrations/create_boxes.rb +0 -5
  260. data/features/thinking_sphinx/db/migrations/create_categories.rb +0 -3
  261. data/features/thinking_sphinx/db/migrations/create_comments.rb +0 -10
  262. data/features/thinking_sphinx/db/migrations/create_developers.rb +0 -7
  263. data/features/thinking_sphinx/db/migrations/create_extensible_betas.rb +0 -5
  264. data/features/thinking_sphinx/db/migrations/create_gammas.rb +0 -3
  265. data/features/thinking_sphinx/db/migrations/create_genres.rb +0 -3
  266. data/features/thinking_sphinx/db/migrations/create_music.rb +0 -6
  267. data/features/thinking_sphinx/db/migrations/create_people.rb +0 -13
  268. data/features/thinking_sphinx/db/migrations/create_posts.rb +0 -6
  269. data/features/thinking_sphinx/db/migrations/create_robots.rb +0 -4
  270. data/features/thinking_sphinx/db/migrations/create_taggings.rb +0 -5
  271. data/features/thinking_sphinx/db/migrations/create_tags.rb +0 -4
  272. data/features/thinking_sphinx/models/alpha.rb +0 -23
  273. data/features/thinking_sphinx/models/andrew.rb +0 -17
  274. data/features/thinking_sphinx/models/animal.rb +0 -5
  275. data/features/thinking_sphinx/models/author.rb +0 -3
  276. data/features/thinking_sphinx/models/beta.rb +0 -13
  277. data/features/thinking_sphinx/models/box.rb +0 -8
  278. data/features/thinking_sphinx/models/cat.rb +0 -3
  279. data/features/thinking_sphinx/models/category.rb +0 -4
  280. data/features/thinking_sphinx/models/comment.rb +0 -10
  281. data/features/thinking_sphinx/models/developer.rb +0 -21
  282. data/features/thinking_sphinx/models/dog.rb +0 -3
  283. data/features/thinking_sphinx/models/extensible_beta.rb +0 -9
  284. data/features/thinking_sphinx/models/fox.rb +0 -5
  285. data/features/thinking_sphinx/models/gamma.rb +0 -5
  286. data/features/thinking_sphinx/models/genre.rb +0 -3
  287. data/features/thinking_sphinx/models/medium.rb +0 -5
  288. data/features/thinking_sphinx/models/music.rb +0 -10
  289. data/features/thinking_sphinx/models/person.rb +0 -24
  290. data/features/thinking_sphinx/models/post.rb +0 -22
  291. data/features/thinking_sphinx/models/robot.rb +0 -12
  292. data/features/thinking_sphinx/models/tag.rb +0 -3
  293. data/lib/cucumber/thinking_sphinx/external_world.rb +0 -12
  294. data/lib/cucumber/thinking_sphinx/internal_world.rb +0 -137
  295. data/lib/cucumber/thinking_sphinx/sql_logger.rb +0 -28
  296. data/lib/thinking_sphinx/action_controller.rb +0 -31
  297. data/lib/thinking_sphinx/active_record/attribute_updates.rb +0 -54
  298. data/lib/thinking_sphinx/active_record/collection_proxy.rb +0 -47
  299. data/lib/thinking_sphinx/active_record/collection_proxy_with_scopes.rb +0 -27
  300. data/lib/thinking_sphinx/active_record/delta.rb +0 -67
  301. data/lib/thinking_sphinx/active_record/has_many_association.rb +0 -44
  302. data/lib/thinking_sphinx/active_record/has_many_association_with_scopes.rb +0 -21
  303. data/lib/thinking_sphinx/active_record/scopes.rb +0 -110
  304. data/lib/thinking_sphinx/adapters/abstract_adapter.rb +0 -94
  305. data/lib/thinking_sphinx/adapters/mysql_adapter.rb +0 -62
  306. data/lib/thinking_sphinx/adapters/postgresql_adapter.rb +0 -188
  307. data/lib/thinking_sphinx/association.rb +0 -230
  308. data/lib/thinking_sphinx/attribute.rb +0 -405
  309. data/lib/thinking_sphinx/auto_version.rb +0 -40
  310. data/lib/thinking_sphinx/bundled_search.rb +0 -40
  311. data/lib/thinking_sphinx/class_facet.rb +0 -20
  312. data/lib/thinking_sphinx/connection.rb +0 -71
  313. data/lib/thinking_sphinx/context.rb +0 -81
  314. data/lib/thinking_sphinx/core/string.rb +0 -15
  315. data/lib/thinking_sphinx/deltas/delete_job.rb +0 -16
  316. data/lib/thinking_sphinx/deltas/index_job.rb +0 -17
  317. data/lib/thinking_sphinx/deploy/capistrano.rb +0 -99
  318. data/lib/thinking_sphinx/field.rb +0 -98
  319. data/lib/thinking_sphinx/index/builder.rb +0 -315
  320. data/lib/thinking_sphinx/index/faux_column.rb +0 -118
  321. data/lib/thinking_sphinx/join.rb +0 -37
  322. data/lib/thinking_sphinx/property.rb +0 -187
  323. data/lib/thinking_sphinx/search_methods.rb +0 -439
  324. data/lib/thinking_sphinx/sinatra.rb +0 -7
  325. data/lib/thinking_sphinx/source.rb +0 -194
  326. data/lib/thinking_sphinx/source/internal_properties.rb +0 -51
  327. data/lib/thinking_sphinx/source/sql.rb +0 -174
  328. data/spec/fixtures/data.sql +0 -32
  329. data/spec/fixtures/database.yml.default +0 -3
  330. data/spec/fixtures/models.rb +0 -164
  331. data/spec/fixtures/structure.sql +0 -146
  332. data/spec/sphinx_helper.rb +0 -60
  333. data/spec/support/rails.rb +0 -25
  334. data/spec/thinking_sphinx/active_record/delta_spec.rb +0 -123
  335. data/spec/thinking_sphinx/active_record/has_many_association_spec.rb +0 -173
  336. data/spec/thinking_sphinx/active_record/scopes_spec.rb +0 -177
  337. data/spec/thinking_sphinx/active_record_spec.rb +0 -573
  338. data/spec/thinking_sphinx/adapters/abstract_adapter_spec.rb +0 -163
  339. data/spec/thinking_sphinx/association_spec.rb +0 -250
  340. data/spec/thinking_sphinx/attribute_spec.rb +0 -552
  341. data/spec/thinking_sphinx/auto_version_spec.rb +0 -103
  342. data/spec/thinking_sphinx/connection_spec.rb +0 -77
  343. data/spec/thinking_sphinx/context_spec.rb +0 -127
  344. data/spec/thinking_sphinx/core/array_spec.rb +0 -9
  345. data/spec/thinking_sphinx/core/string_spec.rb +0 -9
  346. data/spec/thinking_sphinx/facet_spec.rb +0 -359
  347. data/spec/thinking_sphinx/field_spec.rb +0 -127
  348. data/spec/thinking_sphinx/index/builder_spec.rb +0 -532
  349. data/spec/thinking_sphinx/index/faux_column_spec.rb +0 -36
  350. data/spec/thinking_sphinx/search_methods_spec.rb +0 -156
  351. data/spec/thinking_sphinx/source_spec.rb +0 -267
  352. data/spec/thinking_sphinx/test_spec.rb +0 -20
@@ -1,10 +0,0 @@
1
- Feature: Abstract inheritance
2
- In order to use Thinking Sphinx in complex situations
3
- As a developer
4
- I want to define indexes on subclasses of abstract models
5
-
6
- Scenario: Searching on subclasses of abstract models
7
- Given Sphinx is running
8
- And I am searching on music
9
- When I search
10
- Then I should get 3 results
@@ -1,27 +0,0 @@
1
- Feature: Searching on a single model
2
- In order to use search models with non-integer primary keys
3
- A developer
4
- Should be able to search on a single model
5
-
6
- Scenario: Searching using a basic query
7
- Given Sphinx is running
8
- And I am searching on robots
9
- When I search for Sizzle
10
- Then I should get 2 results
11
-
12
- Scenario: Searching using another basic query
13
- Given Sphinx is running
14
- And I am searching on robots
15
- When I search for fritz
16
- Then I should get 1 result
17
-
18
- Scenario: Deleting an instance
19
- Given Sphinx is running
20
- And I am searching on robots
21
- When I search for Expendable
22
- Then I should get 1 result
23
-
24
- When I destroy robot Expendable
25
- And I wait for Sphinx to catch up
26
- And I search for Expendable
27
- Then I should get 0 results
@@ -1,22 +0,0 @@
1
- Feature: Handle not-quite-supported column types as attributes
2
- In order for Thinking Sphinx to be more understanding with model structures
3
- The plugin
4
- Should be able to use translatable columns as attributes
5
-
6
- Scenario: Decimals as floats
7
- Given Sphinx is running
8
- And I am searching on alphas
9
- When I filter between 1.0 and 3.0 on cost
10
- Then I should get 2 results
11
-
12
- Scenario: Dates as Datetimes
13
- Given Sphinx is running
14
- And I am searching on alphas
15
- When I filter between 2 and 4 days ago on created_on by date
16
- Then I should get 3 results
17
-
18
- Scenario: Timestamps as Datetimes
19
- Given Sphinx is running
20
- And I am searching on alphas
21
- When I filter between 2 and 4 days ago on created_at
22
- Then I should get 2 results
@@ -1,79 +0,0 @@
1
- Feature: Update attributes directly to Sphinx
2
- In order for updates to be more seamless
3
- The plugin
4
- Should update Sphinx's attributes where possible
5
-
6
- Scenario: Updating attributes in Sphinx without delta indexes
7
- Given Sphinx is running
8
- And I am searching on alphas
9
- When I filter by 3 on value
10
- Then I should get 1 result
11
-
12
- When I change the value of alpha four to 13
13
- And I wait for Sphinx to catch up
14
- And I filter by 13 on value
15
- And I use index alpha_core
16
- Then I should get 1 result
17
- When I use index alternative_core
18
- Then I should get 1 result
19
-
20
- When I change the value of alpha four to 4
21
- And I wait for Sphinx to catch up
22
- And I filter by 13 on value
23
- And I use index alpha_core
24
- Then I should get 0 results
25
- When I use index alternative_core
26
- Then I should get 0 result
27
-
28
- Scenario: Updating attributes in Sphinx with delta indexes
29
- Given Sphinx is running
30
- And I am searching on betas
31
- When I filter by 8 on value
32
- Then I should get 1 result
33
-
34
- When I change the value of beta eight to 18
35
- And I wait for Sphinx to catch up
36
- And I filter by 18 on value
37
- Then I should get 1 result
38
-
39
- When I search for the document id of beta eight in the secondary_beta_delta index
40
- Then it should not exist
41
-
42
- Scenario: Updating attributes in a delta index
43
- Given Sphinx is running
44
- And I am searching on betas
45
-
46
- When I change the name of beta nine to nineteen
47
- And I change the value of beta nineteen to 19
48
- And I wait for Sphinx to catch up
49
-
50
- When I filter by 19 on value
51
- And I use index secondary_beta_delta
52
- And I clear the connection pool
53
- Then I should get 1 result
54
-
55
- Scenario: Updating attributes in a delta index with deltas disabled
56
- Given Sphinx is running
57
- And I am searching on betas
58
-
59
- When I change the name of beta eleven to twentyone
60
- And I disable delta updates
61
- And I change the value of beta twentyone to 21
62
- And I wait for Sphinx to catch up
63
- And I clear the connection pool
64
-
65
- When I filter by 21 on value
66
- And I use index secondary_beta_delta
67
- Then I should get 1 result
68
- And I enable delta updates
69
-
70
- Scenario: Updating boolean attribute in Sphinx
71
- Given Sphinx is running
72
- And I am searching on alphas
73
- When I filter by active alphas
74
- Then I should get 10 results
75
-
76
- When I flag alpha five as inactive
77
- And I wait for Sphinx to catch up
78
- And I filter by active alphas
79
- Then I should get 9 results
@@ -1,70 +0,0 @@
1
- Feature: Keeping Sphinx in line with deleted model instances
2
- In order to avoid deleted items being returned by Sphinx
3
- Thinking Sphinx
4
- Should keep deleted items out of search results
5
-
6
- Scenario: Deleting instances from the core index
7
- Given Sphinx is running
8
- And I am searching on betas
9
- When I search for three
10
- Then I should get 1 result
11
-
12
- When I destroy beta three
13
- And I wait for Sphinx to catch up
14
- And I search for three
15
- Then I should get 0 results
16
-
17
- Scenario: Deleting subclasses when the parent class is indexed
18
- Given Sphinx is running
19
- And I am searching on cats
20
- When I search for moggy
21
- Then I should get 1 result
22
-
23
- When I destroy cat moggy
24
- And I wait for Sphinx to catch up
25
- And I search for moggy
26
- Then I should get 0 results
27
-
28
- Scenario: Deleting created instances from the delta index
29
- Given Sphinx is running
30
- And I am searching on betas
31
- When I create a new beta named eighteen
32
- And I wait for Sphinx to catch up
33
- And I clear the connection pool
34
- And I search for eighteen
35
- Then I should get 1 result
36
-
37
- When I destroy beta eighteen
38
- And I wait for Sphinx to catch up
39
- And I search for eighteen
40
- Then I should get 0 results
41
-
42
- Scenario: Deleting edited instances from the delta index
43
- Given Sphinx is running
44
- And I am searching on betas
45
- When I change the name of beta four to fourteen
46
- And I wait for Sphinx to catch up
47
- And I clear the connection pool
48
- And I search for fourteen
49
- Then I should get 1 result
50
-
51
- When I destroy beta fourteen
52
- And I wait for Sphinx to catch up
53
- And I search for fourteen
54
- Then I should get 0 results
55
-
56
- Scenario: Deleting created instances from the delta index when deltas are disabled
57
- Given Sphinx is running
58
- And I am searching on betas
59
- When I create a new beta named thirteen
60
- And I wait for Sphinx to catch up
61
- And I clear the connection pool
62
- And I search for thirteen
63
- Then I should get 1 result
64
-
65
- And I disable delta updates
66
- And I destroy beta thirteen
67
- And I wait for Sphinx to catch up
68
- And I enable delta updates
69
- And I search for thirteen
70
- Then I should get 0 results
@@ -1,11 +0,0 @@
1
- Feature: Direct Attributes
2
- In order to avoid unnecessary SQL queries
3
- I want to access attribute values from Sphinx's response
4
-
5
- Scenario: Accessing attribute values directly
6
- Given Sphinx is running
7
- And I am searching on posts
8
- When I search
9
- Then the first result should have a comments count of 9
10
-
11
-
@@ -1,21 +0,0 @@
1
- Feature: Generate excerpts for search results
2
-
3
- Scenario: Basic Excerpts Syntax
4
- Given Sphinx is running
5
- And I am searching on comments
6
- And I search for "lorem punto"
7
- Then the content excerpt of the first result is "de un sitio mientras que mira su diseño. El <span class="match">punto</span> de usar <span class="match">Lorem</span> Ipsum es que tiene una distribución"
8
-
9
- Scenario: Integrated Excerpts Syntax
10
- Given Sphinx is running
11
- And I am searching on comments
12
- And I search for "lorem"
13
- Then calling content on the first result excerpts object should return "de un sitio mientras que mira su diseño. El punto de usar <span class="match">Lorem</span> Ipsum es que tiene una distribución"
14
-
15
- Scenario: Excerpt Options
16
- Given Sphinx is running
17
- And I am searching on comments
18
- And I search for "lorem"
19
- And I provide excerpt option "before_match" with value "<em>"
20
- And I provide excerpt option "after_match" with value "</em>"
21
- Then calling content on the first result excerpts object should return "de un sitio mientras que mira su diseño. El punto de usar <em>Lorem</em> Ipsum es que tiene una distribución"
@@ -1,9 +0,0 @@
1
- Feature: Delayed Delta Indexing
2
- In order to have delta indexing on frequently-updated sites
3
- Developers
4
- Should be able to create their own handlers for delta indexing
5
-
6
- Scenario: I specify a valid handler for delta indexing
7
- Given Sphinx is running
8
- When I change the name of extensible beta one to eleven
9
- Then the generic delta handler should handle the delta indexing
@@ -1,88 +0,0 @@
1
- Feature: Search and browse models by their defined facets
2
-
3
- Background:
4
- Given Sphinx is running
5
-
6
- Scenario: Requesting facets
7
- Given I am searching on developers
8
- When I am requesting facet results
9
- Then I should have valid facet results
10
- And I should have 6 facets
11
- And I should have the facet State
12
- And I should have the facet Country
13
- And I should have the facet Age
14
- And I should have the facet City
15
- And I should have the facet Tag Ids
16
- And I should have the facet Tags
17
-
18
- Scenario: Requesting specific facets
19
- Given I am searching on developers
20
- When I am requesting facet results
21
- And I am requesting just the facet State
22
- Then I should have valid facet results
23
- And I should have 1 facet
24
- And I should have the facet State
25
- When I am requesting just the facets State and Age
26
- Then I should have valid facet results
27
- And I should have 2 facet
28
- And I should have the facet State
29
- And I should have the facet Age
30
-
31
- Scenario: Requesting float facets
32
- Given I am searching on alphas
33
- When I am requesting facet results
34
- Then I should have 1 facet
35
- And the Cost facet should have a 5.55 key
36
-
37
- Scenario: Requesting facet results
38
- Given I am searching on developers
39
- When I am requesting facet results
40
- And I drill down where Country is Australia
41
- Then I should get 11 results
42
-
43
- Scenario: Requesting facet results by multiple facets
44
- Given I am searching on developers
45
- When I am requesting facet results
46
- And I drill down where Country is Australia and Age is 30
47
- Then I should get 4 results
48
-
49
- Scenario: Requesting facets with classes included
50
- Given I am searching on developers
51
- When I am requesting facet results
52
- And I want classes included
53
- Then I should have valid facet results
54
- And I should have 7 facets
55
- And I should have the facet Class
56
-
57
- Scenario: Requesting MVA facets
58
- Given I am searching on developers
59
- When I am requesting facet results
60
- And I drill down where tag_ids includes the id of tag Australia
61
- Then I should get 11 results
62
- When I am requesting facet results
63
- And I drill down where tag_ids includes the id of tags Melbourne or Sydney
64
- Then I should get 5 results
65
-
66
- Scenario: Requesting MVA string facets
67
- Given I am searching on developers
68
- When I am requesting facet results
69
- Then the Tags facet should have an "Australia" key
70
- Then the Tags facet should have an "Melbourne" key
71
- Then the Tags facet should have an "Victoria" key
72
-
73
- Scenario: Requesting MVA facets from source queries
74
- Given I am searching on posts
75
- When I am requesting facet results
76
- Then the Comment Ids facet should have 9 keys
77
-
78
- Scenario: Requesting facets from a subclass
79
- Given I am searching on animals
80
- When I am requesting facet results
81
- And I want classes included
82
- Then I should have the facet Class
83
-
84
- Scenario: Requesting facets with explicit value sources
85
- Given I am searching on developers
86
- When I am requesting facet results
87
- Then the City facet should have a "Melbourne" key
88
-
@@ -1,29 +0,0 @@
1
- Feature: Search and browse across models by their defined facets
2
-
3
- Scenario: Requesting facets across multiple models
4
- Given Sphinx is running
5
- When I am requesting facet results
6
- And I want all possible attributes
7
- Then I should have valid facet results
8
- And I should have 12 facets
9
- And I should have the facet Class
10
- And the Class facet should have a "Person" key
11
- And I should have the facet Gender
12
- And the Gender facet should have a "female" key
13
- And I should have the facet Country
14
- And I should have the facet Category Name
15
- And the Category Name facet should have a "hello" key with 10 hits
16
-
17
- Scenario: Requesting facets across models without class results
18
- Given Sphinx is running
19
- When I am requesting facet results
20
- And I want all possible attributes
21
- And I don't want classes included
22
- Then I should have 11 facets
23
- And I should not have the facet Class
24
-
25
- Scenario: Requesting facets common to all indexed models
26
- Given Sphinx is running
27
- When I am requesting facet results
28
- Then I should have the facet Class
29
- And I should have 1 facet
@@ -1,18 +0,0 @@
1
- Feature: Field Sorting
2
- In order to sort by strings
3
- As a developer
4
- I want to enable sorting by existing fields
5
-
6
- Background:
7
- Given Sphinx is running
8
- And I am searching on people
9
-
10
- Scenario: Searching with ordering on a sortable field
11
- When I order by first_name
12
- Then I should get 20 results
13
- And the first_name of each result should indicate order
14
-
15
- Scenario: Sort on a case insensitive sortable field
16
- When I order by last_name
17
- Then the first result's "last_name" should be "abbott"
18
-
@@ -1,97 +0,0 @@
1
- Feature: Keeping Sphinx in line with model changes when requested
2
- In order to keep indexes as up to date as possible
3
- Thinking Sphinx
4
- Should return the expected results depending on whether delta indexes are used
5
-
6
- Scenario: Returning instance from old data if there is no delta
7
- Given Sphinx is running
8
- And I am searching on alphas
9
- When I search for two
10
- Then I should get 1 result
11
-
12
- When I change the name of alpha two to twelve
13
- And I wait for Sphinx to catch up
14
- And I search for two
15
- Then I should get 1 result
16
-
17
- Scenario: Not returning an instance from old data if there is a delta
18
- Given Sphinx is running
19
- And I am searching on betas
20
- When I search for two
21
- Then I should get 1 result
22
-
23
- When I change the name of beta two to twelve
24
- And I wait for Sphinx to catch up
25
- And I clear the connection pool
26
- And I search for two
27
- Then I should get 0 results
28
-
29
- Scenario: Returning instance from new data if there is a delta
30
- Given Sphinx is running
31
- And I am searching on betas
32
- When I search for one
33
- Then I should get 1 result
34
-
35
- When I change the name of beta one to eleventeen
36
- And I wait for Sphinx to catch up
37
- And I clear the connection pool
38
- And I search for one
39
- Then I should get 0 results
40
-
41
- When I search for eleventeen
42
- Then I should get 1 result
43
-
44
- Scenario: Returning new records if there's a delta
45
- Given Sphinx is running
46
- And I am searching on betas
47
- When I search for fifteen
48
- Then I should get 0 results
49
-
50
- When I create a new beta named fifteen
51
- And I wait for Sphinx to catch up
52
- And I clear the connection pool
53
- And I search for fifteen
54
- Then I should get 1 result
55
-
56
- Scenario: Avoiding delta updates if there hasn't been changes
57
- Given Sphinx is running
58
- And I am searching on betas
59
- When I search for five
60
- Then I should get 1 result
61
-
62
- When I change the name of beta five to five
63
- And I wait for Sphinx to catch up
64
- And I search for five
65
- Then I should get 1 result
66
-
67
- When I search for the document id of beta five in the beta_core index
68
- Then it should exist if using Rails 2.1 or newer
69
- When I search for the document id of beta five in the secondary_beta_core index
70
- Then it should exist if using Rails 2.1 or newer
71
- When I search for the document id of beta five in the secondary_beta_delta index
72
- Then it should not exist if using Rails 2.1 or newer
73
-
74
- Scenario: Handling edits with a delta when Sphinx isn't running
75
- Given Sphinx is running
76
- And I am searching on betas
77
- When I stop Sphinx
78
- And I change the name of beta six to sixteen
79
- And I start Sphinx
80
- And I search for sixteen
81
- Then I should get 1 result
82
-
83
- Scenario: Handling edits when updates are disabled
84
- Given Sphinx is running
85
- And updates are disabled
86
- And I am searching on betas
87
-
88
- When I search for seven
89
- Then I should get 1 result
90
-
91
- When I change the name of beta seven to seventeen
92
- And I wait for Sphinx to catch up
93
- And I search for seven
94
- Then I should get 1 result
95
-
96
- When I search for seventeen
97
- Then I should get 0 results