thinking-sphinx 3.4.2 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +20 -18
- data/Appraisals +28 -16
- data/CHANGELOG.markdown +538 -0
- data/Gemfile +9 -11
- data/README.textile +23 -31
- data/Rakefile +2 -0
- data/bin/console +2 -1
- data/bin/loadsphinx +29 -2
- data/lib/thinking-sphinx.rb +2 -0
- data/lib/thinking/sphinx.rb +2 -0
- data/lib/thinking_sphinx.rb +24 -13
- data/lib/thinking_sphinx/active_record.rb +10 -1
- data/lib/thinking_sphinx/active_record/association.rb +2 -0
- data/lib/thinking_sphinx/active_record/association_proxy.rb +2 -0
- data/lib/thinking_sphinx/active_record/association_proxy/attribute_finder.rb +2 -0
- data/lib/thinking_sphinx/active_record/association_proxy/attribute_matcher.rb +2 -0
- data/lib/thinking_sphinx/active_record/attribute.rb +2 -0
- data/lib/thinking_sphinx/active_record/attribute/sphinx_presenter.rb +2 -0
- data/lib/thinking_sphinx/active_record/attribute/type.rb +2 -0
- data/lib/thinking_sphinx/active_record/attribute/values.rb +2 -0
- data/lib/thinking_sphinx/active_record/base.rb +2 -0
- data/lib/thinking_sphinx/active_record/callbacks/delete_callbacks.rb +2 -0
- data/lib/thinking_sphinx/active_record/callbacks/delta_callbacks.rb +2 -0
- data/lib/thinking_sphinx/active_record/callbacks/update_callbacks.rb +2 -0
- data/lib/thinking_sphinx/active_record/column.rb +2 -0
- data/lib/thinking_sphinx/active_record/column_sql_presenter.rb +2 -0
- data/lib/thinking_sphinx/active_record/database_adapters.rb +2 -0
- data/lib/thinking_sphinx/active_record/database_adapters/abstract_adapter.rb +2 -0
- data/lib/thinking_sphinx/active_record/database_adapters/mysql_adapter.rb +2 -0
- data/lib/thinking_sphinx/active_record/database_adapters/postgresql_adapter.rb +2 -0
- data/lib/thinking_sphinx/active_record/depolymorph/association_reflection.rb +32 -0
- data/lib/thinking_sphinx/active_record/depolymorph/base_reflection.rb +32 -0
- data/lib/thinking_sphinx/active_record/depolymorph/conditions_reflection.rb +40 -0
- data/lib/thinking_sphinx/active_record/depolymorph/overridden_reflection.rb +35 -0
- data/lib/thinking_sphinx/active_record/depolymorph/scoped_reflection.rb +26 -0
- data/lib/thinking_sphinx/active_record/field.rb +2 -0
- data/lib/thinking_sphinx/active_record/filter_reflection.rb +13 -71
- data/lib/thinking_sphinx/active_record/index.rb +2 -0
- data/lib/thinking_sphinx/active_record/interpreter.rb +2 -0
- data/lib/thinking_sphinx/active_record/join_association.rb +2 -0
- data/lib/thinking_sphinx/active_record/log_subscriber.rb +2 -0
- data/lib/thinking_sphinx/active_record/polymorpher.rb +2 -0
- data/lib/thinking_sphinx/active_record/property.rb +2 -0
- data/lib/thinking_sphinx/active_record/property_query.rb +2 -0
- data/lib/thinking_sphinx/active_record/property_sql_presenter.rb +2 -0
- data/lib/thinking_sphinx/active_record/simple_many_query.rb +2 -0
- data/lib/thinking_sphinx/active_record/source_joins.rb +2 -0
- data/lib/thinking_sphinx/active_record/sql_builder.rb +2 -0
- data/lib/thinking_sphinx/active_record/sql_builder/clause_builder.rb +2 -0
- data/lib/thinking_sphinx/active_record/sql_builder/query.rb +2 -0
- data/lib/thinking_sphinx/active_record/sql_builder/statement.rb +2 -0
- data/lib/thinking_sphinx/active_record/sql_source.rb +15 -3
- data/lib/thinking_sphinx/active_record/sql_source/template.rb +2 -0
- data/lib/thinking_sphinx/attribute_types.rb +2 -0
- data/lib/thinking_sphinx/batched_search.rb +2 -0
- data/lib/thinking_sphinx/callbacks.rb +2 -0
- data/lib/thinking_sphinx/capistrano.rb +2 -0
- data/lib/thinking_sphinx/capistrano/v2.rb +2 -0
- data/lib/thinking_sphinx/capistrano/v3.rb +2 -0
- data/lib/thinking_sphinx/commander.rb +27 -0
- data/lib/thinking_sphinx/commands.rb +20 -0
- data/lib/thinking_sphinx/commands/base.rb +9 -1
- data/lib/thinking_sphinx/commands/clear_real_time.rb +22 -0
- data/lib/thinking_sphinx/commands/clear_sql.rb +18 -0
- data/lib/thinking_sphinx/commands/configure.rb +2 -0
- data/lib/thinking_sphinx/commands/index_real_time.rb +17 -0
- data/lib/thinking_sphinx/commands/index_sql.rb +25 -0
- data/lib/thinking_sphinx/commands/merge.rb +27 -0
- data/lib/thinking_sphinx/commands/merge_and_update.rb +57 -0
- data/lib/thinking_sphinx/commands/prepare.rb +13 -0
- data/lib/thinking_sphinx/commands/rotate.rb +13 -0
- data/lib/thinking_sphinx/commands/running.rb +13 -0
- data/lib/thinking_sphinx/commands/start_attached.rb +2 -0
- data/lib/thinking_sphinx/commands/start_detached.rb +3 -1
- data/lib/thinking_sphinx/commands/stop.rb +4 -2
- data/lib/thinking_sphinx/configuration.rb +28 -47
- data/lib/thinking_sphinx/configuration/consistent_ids.rb +2 -0
- data/lib/thinking_sphinx/configuration/defaults.rb +2 -0
- data/lib/thinking_sphinx/configuration/distributed_indices.rb +2 -0
- data/lib/thinking_sphinx/configuration/duplicate_names.rb +2 -0
- data/lib/thinking_sphinx/configuration/minimum_fields.rb +2 -0
- data/lib/thinking_sphinx/connection.rb +4 -5
- data/lib/thinking_sphinx/connection/client.rb +21 -0
- data/lib/thinking_sphinx/connection/jruby.rb +7 -2
- data/lib/thinking_sphinx/connection/mri.rb +2 -4
- data/lib/thinking_sphinx/core.rb +2 -0
- data/lib/thinking_sphinx/core/field.rb +2 -0
- data/lib/thinking_sphinx/core/index.rb +4 -1
- data/lib/thinking_sphinx/core/interpreter.rb +2 -0
- data/lib/thinking_sphinx/core/property.rb +2 -0
- data/lib/thinking_sphinx/core/settings.rb +2 -0
- data/lib/thinking_sphinx/deletion.rb +2 -0
- data/lib/thinking_sphinx/deltas.rb +2 -0
- data/lib/thinking_sphinx/deltas/default_delta.rb +2 -0
- data/lib/thinking_sphinx/deltas/delete_job.rb +2 -0
- data/lib/thinking_sphinx/deltas/index_job.rb +9 -1
- data/lib/thinking_sphinx/distributed.rb +2 -0
- data/lib/thinking_sphinx/distributed/index.rb +2 -0
- data/lib/thinking_sphinx/errors.rb +9 -0
- data/lib/thinking_sphinx/excerpter.rb +2 -0
- data/lib/thinking_sphinx/facet.rb +4 -3
- data/lib/thinking_sphinx/facet_search.rb +4 -2
- data/lib/thinking_sphinx/float_formatter.rb +2 -0
- data/lib/thinking_sphinx/frameworks.rb +2 -0
- data/lib/thinking_sphinx/frameworks/plain.rb +2 -0
- data/lib/thinking_sphinx/frameworks/rails.rb +2 -0
- data/lib/thinking_sphinx/guard.rb +3 -0
- data/lib/thinking_sphinx/guard/file.rb +2 -0
- data/lib/thinking_sphinx/guard/files.rb +2 -0
- data/lib/thinking_sphinx/guard/none.rb +7 -0
- data/lib/thinking_sphinx/hooks/guard_presence.rb +34 -0
- data/lib/thinking_sphinx/index.rb +2 -0
- data/lib/thinking_sphinx/index_set.rb +2 -0
- data/lib/thinking_sphinx/indexing_strategies/all_at_once.rb +2 -0
- data/lib/thinking_sphinx/indexing_strategies/one_at_a_time.rb +2 -0
- data/lib/thinking_sphinx/interfaces.rb +10 -0
- data/lib/thinking_sphinx/interfaces/base.rb +13 -0
- data/lib/thinking_sphinx/interfaces/daemon.rb +6 -11
- data/lib/thinking_sphinx/interfaces/real_time.rb +19 -14
- data/lib/thinking_sphinx/interfaces/sql.rb +22 -10
- data/lib/thinking_sphinx/logger.rb +2 -0
- data/lib/thinking_sphinx/masks.rb +2 -0
- data/lib/thinking_sphinx/masks/group_enumerators_mask.rb +6 -4
- data/lib/thinking_sphinx/masks/pagination_mask.rb +2 -0
- data/lib/thinking_sphinx/masks/scopes_mask.rb +2 -0
- data/lib/thinking_sphinx/masks/weight_enumerator_mask.rb +3 -1
- data/lib/thinking_sphinx/middlewares.rb +5 -3
- data/lib/thinking_sphinx/middlewares/active_record_translator.rb +2 -0
- data/lib/thinking_sphinx/middlewares/geographer.rb +2 -0
- data/lib/thinking_sphinx/middlewares/glazier.rb +2 -0
- data/lib/thinking_sphinx/middlewares/ids_only.rb +2 -0
- data/lib/thinking_sphinx/middlewares/inquirer.rb +2 -0
- data/lib/thinking_sphinx/middlewares/middleware.rb +2 -0
- data/lib/thinking_sphinx/middlewares/sphinxql.rb +4 -2
- data/lib/thinking_sphinx/middlewares/stale_id_checker.rb +2 -0
- data/lib/thinking_sphinx/middlewares/stale_id_filter.rb +2 -0
- data/lib/thinking_sphinx/middlewares/valid_options.rb +2 -0
- data/lib/thinking_sphinx/panes.rb +2 -0
- data/lib/thinking_sphinx/panes/attributes_pane.rb +2 -0
- data/lib/thinking_sphinx/panes/distance_pane.rb +2 -0
- data/lib/thinking_sphinx/panes/excerpts_pane.rb +2 -0
- data/lib/thinking_sphinx/panes/weight_pane.rb +3 -1
- data/lib/thinking_sphinx/query.rb +2 -0
- data/lib/thinking_sphinx/railtie.rb +2 -0
- data/lib/thinking_sphinx/rake_interface.rb +3 -1
- data/lib/thinking_sphinx/real_time.rb +3 -0
- data/lib/thinking_sphinx/real_time/attribute.rb +2 -0
- data/lib/thinking_sphinx/real_time/callbacks/real_time_callbacks.rb +2 -0
- data/lib/thinking_sphinx/real_time/field.rb +2 -0
- data/lib/thinking_sphinx/real_time/index.rb +2 -0
- data/lib/thinking_sphinx/real_time/index/template.rb +2 -0
- data/lib/thinking_sphinx/real_time/interpreter.rb +2 -0
- data/lib/thinking_sphinx/real_time/populator.rb +2 -1
- data/lib/thinking_sphinx/real_time/property.rb +2 -0
- data/lib/thinking_sphinx/real_time/transcribe_instance.rb +38 -0
- data/lib/thinking_sphinx/real_time/transcriber.rb +18 -27
- data/lib/thinking_sphinx/real_time/translator.rb +3 -1
- data/lib/thinking_sphinx/scopes.rb +2 -0
- data/lib/thinking_sphinx/search.rb +2 -0
- data/lib/thinking_sphinx/search/batch_inquirer.rb +2 -0
- data/lib/thinking_sphinx/search/context.rb +2 -0
- data/lib/thinking_sphinx/search/glaze.rb +2 -0
- data/lib/thinking_sphinx/search/merger.rb +2 -0
- data/lib/thinking_sphinx/search/query.rb +2 -0
- data/lib/thinking_sphinx/search/stale_ids_exception.rb +2 -0
- data/lib/thinking_sphinx/settings.rb +110 -0
- data/lib/thinking_sphinx/sinatra.rb +2 -0
- data/lib/thinking_sphinx/subscribers/populator_subscriber.rb +18 -0
- data/lib/thinking_sphinx/tasks.rb +13 -46
- data/lib/thinking_sphinx/test.rb +2 -0
- data/lib/thinking_sphinx/utf8.rb +2 -0
- data/lib/thinking_sphinx/wildcard.rb +2 -0
- data/lib/thinking_sphinx/with_output.rb +2 -0
- data/spec/acceptance/association_scoping_spec.rb +2 -0
- data/spec/acceptance/attribute_access_spec.rb +4 -4
- data/spec/acceptance/attribute_updates_spec.rb +2 -0
- data/spec/acceptance/batch_searching_spec.rb +2 -0
- data/spec/acceptance/big_integers_spec.rb +2 -0
- data/spec/acceptance/connection_spec.rb +2 -0
- data/spec/acceptance/excerpts_spec.rb +1 -0
- data/spec/acceptance/facets_spec.rb +2 -3
- data/spec/acceptance/geosearching_spec.rb +3 -1
- data/spec/acceptance/grouping_by_attributes_spec.rb +2 -0
- data/spec/acceptance/index_options_spec.rb +2 -0
- data/spec/acceptance/indexing_spec.rb +2 -0
- data/spec/acceptance/merging_spec.rb +90 -0
- data/spec/acceptance/paginating_search_results_spec.rb +2 -0
- data/spec/acceptance/real_time_updates_spec.rb +2 -0
- data/spec/acceptance/remove_deleted_records_spec.rb +2 -0
- data/spec/acceptance/search_counts_spec.rb +2 -0
- data/spec/acceptance/search_for_just_ids_spec.rb +2 -0
- data/spec/acceptance/searching_across_models_spec.rb +2 -0
- data/spec/acceptance/searching_across_schemas_spec.rb +2 -0
- data/spec/acceptance/searching_on_fields_spec.rb +2 -0
- data/spec/acceptance/searching_with_filters_spec.rb +2 -0
- data/spec/acceptance/searching_with_sti_spec.rb +2 -0
- data/spec/acceptance/searching_within_a_model_spec.rb +2 -0
- data/spec/acceptance/sorting_search_results_spec.rb +2 -0
- data/spec/acceptance/spec_helper.rb +2 -13
- data/spec/acceptance/specifying_sql_spec.rb +2 -0
- data/spec/acceptance/sphinx_scopes_spec.rb +2 -0
- data/spec/acceptance/sql_deltas_spec.rb +2 -0
- data/spec/acceptance/support/database_cleaner.rb +2 -0
- data/spec/acceptance/support/sphinx_controller.rb +16 -5
- data/spec/acceptance/support/sphinx_helpers.rb +11 -0
- data/spec/acceptance/suspended_deltas_spec.rb +2 -0
- data/spec/internal/app/indices/admin_person_index.rb +2 -0
- data/spec/internal/app/indices/album_index.rb +2 -0
- data/spec/internal/app/indices/animal_index.rb +2 -0
- data/spec/internal/app/indices/article_index.rb +2 -0
- data/spec/internal/app/indices/bird_index.rb +2 -0
- data/spec/internal/app/indices/book_index.rb +2 -0
- data/spec/internal/app/indices/car_index.rb +2 -0
- data/spec/internal/app/indices/city_index.rb +2 -0
- data/spec/internal/app/indices/product_index.rb +2 -0
- data/spec/internal/app/indices/tee_index.rb +2 -0
- data/spec/internal/app/indices/user_index.rb +2 -0
- data/spec/internal/app/models/admin/person.rb +2 -0
- data/spec/internal/app/models/album.rb +2 -0
- data/spec/internal/app/models/animal.rb +2 -0
- data/spec/internal/app/models/article.rb +2 -0
- data/spec/internal/app/models/bird.rb +2 -0
- data/spec/internal/app/models/book.rb +2 -0
- data/spec/internal/app/models/car.rb +2 -0
- data/spec/internal/app/models/categorisation.rb +2 -0
- data/spec/internal/app/models/category.rb +2 -0
- data/spec/internal/app/models/city.rb +2 -0
- data/spec/internal/app/models/colour.rb +2 -0
- data/spec/internal/app/models/event.rb +2 -0
- data/spec/internal/app/models/flightless_bird.rb +2 -0
- data/spec/internal/app/models/genre.rb +2 -0
- data/spec/internal/app/models/hardcover.rb +2 -0
- data/spec/internal/app/models/mammal.rb +2 -0
- data/spec/internal/app/models/manufacturer.rb +2 -0
- data/spec/internal/app/models/product.rb +2 -0
- data/spec/internal/app/models/tag.rb +2 -0
- data/spec/internal/app/models/tagging.rb +2 -0
- data/spec/internal/app/models/tee.rb +2 -0
- data/spec/internal/app/models/tweet.rb +2 -0
- data/spec/internal/app/models/user.rb +2 -0
- data/spec/internal/db/schema.rb +2 -0
- data/spec/spec_helper.rb +4 -1
- data/spec/support/json_column.rb +3 -5
- data/spec/support/multi_schema.rb +2 -0
- data/spec/support/mysql.rb +25 -0
- data/spec/support/sphinx_yaml_helpers.rb +2 -0
- data/spec/thinking_sphinx/active_record/association_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/attribute/type_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/base_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/callbacks/delete_callbacks_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/callbacks/delta_callbacks_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/callbacks/update_callbacks_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/column_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/column_sql_presenter_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/database_adapters/abstract_adapter_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/database_adapters/mysql_adapter_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/database_adapters/postgresql_adapter_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/database_adapters_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/field_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/filter_reflection_spec.rb +100 -79
- data/spec/thinking_sphinx/active_record/index_spec.rb +16 -1
- data/spec/thinking_sphinx/active_record/interpreter_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/polymorpher_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/property_sql_presenter_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/sql_builder_spec.rb +2 -0
- data/spec/thinking_sphinx/active_record/sql_source_spec.rb +2 -0
- data/spec/thinking_sphinx/attribute_types_spec.rb +2 -0
- data/spec/thinking_sphinx/commands/clear_real_time_spec.rb +46 -0
- data/spec/thinking_sphinx/commands/clear_sql_spec.rb +52 -0
- data/spec/thinking_sphinx/commands/configure_spec.rb +2 -0
- data/spec/thinking_sphinx/commands/index_real_time_spec.rb +33 -0
- data/spec/thinking_sphinx/commands/index_sql_spec.rb +86 -0
- data/spec/thinking_sphinx/commands/merge_and_update_spec.rb +106 -0
- data/spec/thinking_sphinx/commands/merge_spec.rb +48 -0
- data/spec/thinking_sphinx/commands/prepare_spec.rb +23 -0
- data/spec/thinking_sphinx/commands/start_detached_spec.rb +2 -0
- data/spec/thinking_sphinx/commands/stop_spec.rb +13 -4
- data/spec/thinking_sphinx/configuration/minimum_fields_spec.rb +2 -0
- data/spec/thinking_sphinx/configuration_spec.rb +132 -6
- data/spec/thinking_sphinx/connection_spec.rb +2 -0
- data/spec/thinking_sphinx/deletion_spec.rb +2 -0
- data/spec/thinking_sphinx/deltas/default_delta_spec.rb +8 -1
- data/spec/thinking_sphinx/deltas_spec.rb +2 -0
- data/spec/thinking_sphinx/errors_spec.rb +2 -0
- data/spec/thinking_sphinx/excerpter_spec.rb +2 -0
- data/spec/thinking_sphinx/facet_search_spec.rb +8 -6
- data/spec/thinking_sphinx/hooks/guard_presence_spec.rb +30 -0
- data/spec/thinking_sphinx/index_set_spec.rb +2 -0
- data/spec/thinking_sphinx/index_spec.rb +2 -0
- data/spec/thinking_sphinx/interfaces/daemon_spec.rb +19 -11
- data/spec/thinking_sphinx/interfaces/real_time_spec.rb +43 -43
- data/spec/thinking_sphinx/interfaces/sql_spec.rb +76 -52
- data/spec/thinking_sphinx/masks/pagination_mask_spec.rb +2 -0
- data/spec/thinking_sphinx/masks/scopes_mask_spec.rb +2 -0
- data/spec/thinking_sphinx/middlewares/active_record_translator_spec.rb +2 -0
- data/spec/thinking_sphinx/middlewares/geographer_spec.rb +2 -0
- data/spec/thinking_sphinx/middlewares/glazier_spec.rb +2 -0
- data/spec/thinking_sphinx/middlewares/inquirer_spec.rb +2 -0
- data/spec/thinking_sphinx/middlewares/sphinxql_spec.rb +2 -1
- data/spec/thinking_sphinx/middlewares/stale_id_checker_spec.rb +2 -0
- data/spec/thinking_sphinx/middlewares/stale_id_filter_spec.rb +2 -0
- data/spec/thinking_sphinx/middlewares/valid_options_spec.rb +2 -0
- data/spec/thinking_sphinx/panes/attributes_pane_spec.rb +2 -0
- data/spec/thinking_sphinx/panes/distance_pane_spec.rb +2 -0
- data/spec/thinking_sphinx/panes/excerpts_pane_spec.rb +2 -0
- data/spec/thinking_sphinx/panes/weight_pane_spec.rb +3 -1
- data/spec/thinking_sphinx/rake_interface_spec.rb +10 -8
- data/spec/thinking_sphinx/real_time/attribute_spec.rb +2 -0
- data/spec/thinking_sphinx/real_time/callbacks/real_time_callbacks_spec.rb +2 -0
- data/spec/thinking_sphinx/real_time/field_spec.rb +2 -0
- data/spec/thinking_sphinx/real_time/index_spec.rb +14 -0
- data/spec/thinking_sphinx/real_time/interpreter_spec.rb +2 -0
- data/spec/thinking_sphinx/real_time/transcribe_instance_spec.rb +35 -0
- data/spec/thinking_sphinx/real_time/transcriber_spec.rb +101 -0
- data/spec/thinking_sphinx/real_time/translator_spec.rb +17 -0
- data/spec/thinking_sphinx/scopes_spec.rb +2 -0
- data/spec/thinking_sphinx/search/glaze_spec.rb +2 -0
- data/spec/thinking_sphinx/search/query_spec.rb +2 -0
- data/spec/thinking_sphinx/search_spec.rb +2 -0
- data/spec/thinking_sphinx/wildcard_spec.rb +2 -0
- data/spec/thinking_sphinx_spec.rb +2 -0
- data/thinking-sphinx.gemspec +7 -5
- metadata +62 -25
- data/HISTORY +0 -326
- data/bin/literals +0 -9
- data/lib/thinking_sphinx/commands/index.rb +0 -11
- data/lib/thinking_sphinx/controller.rb +0 -12
- data/lib/thinking_sphinx/middlewares/attribute_typer.rb +0 -48
- data/lib/thinking_sphinx/middlewares/utf8.rb +0 -27
- data/lib/thinking_sphinx/sphinxql.rb +0 -23
- data/spec/thinking_sphinx/commands/index_spec.rb +0 -26
- data/spec/thinking_sphinx/middlewares/attribute_typer_spec.rb +0 -42
data/Gemfile
CHANGED
@@ -1,17 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
source 'https://rubygems.org'
|
2
4
|
|
3
5
|
gemspec
|
4
6
|
|
5
|
-
gem 'mysql2', '~> 0.
|
6
|
-
gem 'pg', '~> 0.18.4',
|
7
|
-
|
8
|
-
gem 'jdbc-mysql', '5.1.35', :platform => :jruby
|
9
|
-
gem 'activerecord-jdbcmysql-adapter', '~> 1.3.23', :platform => :jruby
|
10
|
-
gem 'activerecord-jdbcpostgresql-adapter', '~> 1.3.23', :platform => :jruby
|
7
|
+
gem 'mysql2', '~> 0.5.0', :platform => :ruby
|
8
|
+
gem 'pg', '~> 0.18.4', :platform => :ruby
|
11
9
|
|
12
|
-
if
|
13
|
-
gem '
|
14
|
-
gem '
|
10
|
+
if RUBY_PLATFORM == 'java'
|
11
|
+
gem 'jdbc-mysql', '5.1.35', :platform => :jruby
|
12
|
+
gem 'activerecord-jdbcmysql-adapter', '>= 1.3.23', :platform => :jruby
|
13
|
+
gem 'activerecord-jdbcpostgresql-adapter', '>= 1.3.23', :platform => :jruby
|
14
|
+
gem 'activerecord', '>= 3.2.22'
|
15
15
|
end
|
16
|
-
|
17
|
-
gem 'activerecord', '>= 3.2.22' if RUBY_PLATFORM == 'java'
|
data/README.textile
CHANGED
@@ -1,50 +1,44 @@
|
|
1
1
|
h1. Thinking Sphinx
|
2
2
|
|
3
|
-
Thinking Sphinx is a library for connecting ActiveRecord to the Sphinx full-text search tool, and integrates closely with Rails (but also works with other Ruby web frameworks). The current release is
|
3
|
+
Thinking Sphinx is a library for connecting ActiveRecord to the Sphinx full-text search tool, and integrates closely with Rails (but also works with other Ruby web frameworks). The current release is v4.0.0.
|
4
4
|
|
5
5
|
h2. Upgrading
|
6
6
|
|
7
|
-
Please refer to the release notes for any changes you need to make when upgrading
|
7
|
+
Please refer to "the changelog":https://github.com/pat/thinking-sphinx/blob/develop/CHANGELOG.markdown and "release notes":https://github.com/pat/thinking-sphinx/releases for any changes you need to make when upgrading. The release notes in particular are quite good at covering breaking changes and more details for new features.
|
8
8
|
|
9
|
-
|
10
|
-
* "v3.4.1":https://github.com/pat/thinking-sphinx/releases/tag/v3.4.1
|
11
|
-
* "v3.4.0":https://github.com/pat/thinking-sphinx/releases/tag/v3.4.0
|
12
|
-
* "v3.3.0":https://github.com/pat/thinking-sphinx/releases/tag/v3.3.0
|
13
|
-
* "v3.2.0":https://github.com/pat/thinking-sphinx/releases/tag/v3.2.0
|
14
|
-
* "v3.1.4":https://github.com/pat/thinking-sphinx/releases/tag/v3.1.4
|
15
|
-
* "v3.1.3":https://github.com/pat/thinking-sphinx/releases/tag/v3.1.3
|
16
|
-
* "v3.1.2":https://github.com/pat/thinking-sphinx/releases/tag/v3.1.2
|
17
|
-
* "v3.1.1":https://github.com/pat/thinking-sphinx/releases/tag/v3.1.1
|
18
|
-
* "v3.1.0":https://github.com/pat/thinking-sphinx/releases/tag/v3.1.0
|
19
|
-
* "v3.0.6":https://github.com/pat/thinking-sphinx/releases/tag/v3.0.6
|
20
|
-
|
21
|
-
If you're upgrading from pre-v3, then the documentation has "pretty extensive notes":http://pat.github.io/thinking-sphinx/upgrading.html on what's changed.
|
9
|
+
The documentation also has more details on what's involved for upgrading from "v3 to v4":https://freelancing-gods.com/thinking-sphinx/v4/upgrading.html, and "v1/v2 to v3":https://freelancing-gods.com/thinking-sphinx/v3/upgrading.html.
|
22
10
|
|
23
11
|
h2. Installation
|
24
12
|
|
25
13
|
It's a gem, so install it like you would any other gem. You will also need to specify the mysql2 gem if you're using MRI, or jdbc-mysql if you're using JRuby:
|
26
14
|
|
27
|
-
<pre><code>gem 'mysql2', '~> 0.3',
|
28
|
-
gem 'jdbc-mysql', '
|
29
|
-
gem 'thinking-sphinx', '~>
|
15
|
+
<pre><code>gem 'mysql2', '~> 0.3', :platform => :ruby
|
16
|
+
gem 'jdbc-mysql', '~> 5.1.35', :platform => :jruby
|
17
|
+
gem 'thinking-sphinx', '~> 4.0'</code></pre>
|
30
18
|
|
31
|
-
The MySQL gems mentioned are required for connecting to Sphinx, so please include it even when you're using PostgreSQL for your database. If you're using JRuby, there is "currently an issue with Sphinx and jdbc-mysql 5.1.36 or newer":http://sphinxsearch.com/forum/view.html?id=13939, so you'll need to stick to nothing more recent than 5.1.35.
|
19
|
+
The MySQL gems mentioned are required for connecting to Sphinx, so please include it even when you're using PostgreSQL for your database. If you're using JRuby with a version of Sphinx prior to 2.2.11, there is "currently an issue with Sphinx and jdbc-mysql 5.1.36 or newer":http://sphinxsearch.com/forum/view.html?id=13939, so you'll need to stick to nothing more recent than 5.1.35, or upgrade Sphinx.
|
32
20
|
|
33
|
-
You'll also need to install Sphinx - this is covered in "the extended documentation":
|
21
|
+
You'll also need to install Sphinx - this is covered in "the extended documentation":https://freelancing-gods.com/thinking-sphinx/installing_sphinx.html.
|
34
22
|
|
35
23
|
h2. Usage
|
36
24
|
|
37
|
-
Begin by reading the "quick-start guide":
|
25
|
+
Begin by reading the "quick-start guide":https://freelancing-gods.com/thinking-sphinx/quickstart.html, and beyond that, "the documentation":https://freelancing-gods.com/thinking-sphinx/ should serve you pretty well.
|
38
26
|
|
39
|
-
|
27
|
+
h2. Requirements
|
40
28
|
|
41
|
-
|
29
|
+
The current release of Thinking Sphinx works with the following versions of its dependencies:
|
42
30
|
|
43
|
-
|
31
|
+
|_. Library |_. Minimum |_. Tested Against |
|
32
|
+
| Ruby | v2.2 | v2.2.9, v2.3.6, v2.4.3, v2.5.0, JRuby 9.1.14 |
|
33
|
+
| Sphinx | v2.1.2 | v2.1.9, v2.2.11, v3.0.2 |
|
34
|
+
| Manticore | v2.6.3 | v2.6.3 |
|
35
|
+
| ActiveRecord | v3.2 | v3.2, v4.0, v4.1, v4.2, v5.0, v5.1, v5.2 |
|
44
36
|
|
45
|
-
|
37
|
+
It _might_ work with older versions of Ruby, but it's highly recommended to update to a supported release.
|
46
38
|
|
47
|
-
|
39
|
+
h3. Sphinx or Manticore
|
40
|
+
|
41
|
+
Thinking Sphinx v3 is currently built for Sphinx 2.1.2 or newer, or Manticore v2.6+.
|
48
42
|
|
49
43
|
h3. Rails and ActiveRecord
|
50
44
|
|
@@ -56,9 +50,7 @@ If you want ActiveRecord 3.1 support, then refer to the 3.0.x releases of Thinki
|
|
56
50
|
|
57
51
|
h3. Ruby
|
58
52
|
|
59
|
-
You'll need either the standard Ruby (
|
60
|
-
|
61
|
-
JRuby is only supported as of Thinking Sphinx v3.1.0, and requires Sphinx 2.1.2 or newer.
|
53
|
+
You'll need either the standard Ruby (v2.2 or newer) or JRuby (9.1 or newer).
|
62
54
|
|
63
55
|
h3. Database Versions
|
64
56
|
|
@@ -66,7 +58,7 @@ MySQL 5.x and Postgres 8.4 or better are supported.
|
|
66
58
|
|
67
59
|
h2. Contributing
|
68
60
|
|
69
|
-
Please note that this project
|
61
|
+
Please note that this project has a "Contributor Code of Conduct":http://contributor-covenant.org/version/1/0/0/. By participating in this project you agree to abide by its terms.
|
70
62
|
|
71
63
|
To contribute, clone this repository and have a good look through the specs - you'll notice the distinction between acceptance tests that actually use Sphinx and go through the full stack, and unit tests (everything else) which use liberal test doubles to ensure they're only testing the behaviour of the class in question. I've found this leads to far better code design.
|
72
64
|
|
@@ -87,4 +79,4 @@ You can then run the unit tests with @rake spec:unit@, the acceptance tests with
|
|
87
79
|
|
88
80
|
h2. Licence
|
89
81
|
|
90
|
-
Copyright (c) 2007-
|
82
|
+
Copyright (c) 2007-2018, Thinking Sphinx is developed and maintained by Pat Allan, and is released under the open MIT Licence. Many thanks to "all who have contributed patches":https://github.com/pat/thinking-sphinx/contributors.
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
data/bin/loadsphinx
CHANGED
@@ -1,14 +1,28 @@
|
|
1
1
|
#!/usr/bin/env bash
|
2
2
|
|
3
3
|
version=$1
|
4
|
-
|
5
|
-
|
4
|
+
engine=$2
|
5
|
+
name="$engine-$version"
|
6
6
|
bucket="thinking-sphinx"
|
7
7
|
directory="ext/sphinx"
|
8
8
|
prefix="`pwd`/$directory"
|
9
9
|
file="ext/$name.tar.gz"
|
10
10
|
|
11
|
+
if [ "$engine" == "sphinx" ]; then
|
12
|
+
url="http://sphinxsearch.com/files/$name-release.tar.gz"
|
13
|
+
else
|
14
|
+
url="https://github.com/manticoresoftware/manticore.git"
|
15
|
+
fi
|
16
|
+
|
11
17
|
download_and_compile_source () {
|
18
|
+
if [ "$engine" == "sphinx" ]; then
|
19
|
+
download_and_compile_sphinx
|
20
|
+
else
|
21
|
+
download_and_compile_manticore
|
22
|
+
fi
|
23
|
+
}
|
24
|
+
|
25
|
+
download_and_compile_sphinx () {
|
12
26
|
curl -O $url
|
13
27
|
tar -zxf $name-release.tar.gz
|
14
28
|
cd $name-release
|
@@ -19,6 +33,19 @@ download_and_compile_source () {
|
|
19
33
|
rm -rf $name-release.tar.gz $name-release
|
20
34
|
}
|
21
35
|
|
36
|
+
download_and_compile_manticore () {
|
37
|
+
git clone $url $engine
|
38
|
+
cd $engine
|
39
|
+
git checkout $version
|
40
|
+
mkdir build
|
41
|
+
cd build
|
42
|
+
cmake -D WITH_MYSQL=TRUE -D WITH_PGSQL=TRUE -D DISABLE_TESTING=TRUE -D CMAKE_INSTALL_PREFIX=$prefix ..
|
43
|
+
make -j4
|
44
|
+
make install
|
45
|
+
cd ../..
|
46
|
+
rm -rf $engine
|
47
|
+
}
|
48
|
+
|
22
49
|
load_cache () {
|
23
50
|
mkdir ext
|
24
51
|
curl -o $file http://$bucket.s3.amazonaws.com/bincaches/$name.tar.gz
|
data/lib/thinking-sphinx.rb
CHANGED
data/lib/thinking/sphinx.rb
CHANGED
data/lib/thinking_sphinx.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
if RUBY_PLATFORM == 'java'
|
2
4
|
require 'java'
|
3
5
|
require 'jdbc/mysql'
|
@@ -40,9 +42,22 @@ module ThinkingSphinx
|
|
40
42
|
|
41
43
|
@before_index_hooks = []
|
42
44
|
|
43
|
-
|
45
|
+
def self.output
|
46
|
+
@output
|
47
|
+
end
|
48
|
+
|
49
|
+
@output = STDOUT
|
50
|
+
|
51
|
+
def self.rake_interface
|
52
|
+
@rake_interface ||= ThinkingSphinx::RakeInterface
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.rake_interface=(interface)
|
56
|
+
@rake_interface = interface
|
57
|
+
end
|
58
|
+
|
59
|
+
module Hooks; end
|
44
60
|
module IndexingStrategies; end
|
45
|
-
module Interfaces; end
|
46
61
|
module Subscribers; end
|
47
62
|
end
|
48
63
|
|
@@ -52,15 +67,10 @@ require 'thinking_sphinx/batched_search'
|
|
52
67
|
require 'thinking_sphinx/callbacks'
|
53
68
|
require 'thinking_sphinx/core'
|
54
69
|
require 'thinking_sphinx/with_output'
|
55
|
-
require 'thinking_sphinx/
|
56
|
-
require 'thinking_sphinx/commands
|
57
|
-
require 'thinking_sphinx/commands/index'
|
58
|
-
require 'thinking_sphinx/commands/start_attached'
|
59
|
-
require 'thinking_sphinx/commands/start_detached'
|
60
|
-
require 'thinking_sphinx/commands/stop'
|
70
|
+
require 'thinking_sphinx/commander'
|
71
|
+
require 'thinking_sphinx/commands'
|
61
72
|
require 'thinking_sphinx/configuration'
|
62
73
|
require 'thinking_sphinx/connection'
|
63
|
-
require 'thinking_sphinx/controller'
|
64
74
|
require 'thinking_sphinx/deletion'
|
65
75
|
require 'thinking_sphinx/errors'
|
66
76
|
require 'thinking_sphinx/excerpter'
|
@@ -69,13 +79,12 @@ require 'thinking_sphinx/facet_search'
|
|
69
79
|
require 'thinking_sphinx/float_formatter'
|
70
80
|
require 'thinking_sphinx/frameworks'
|
71
81
|
require 'thinking_sphinx/guard'
|
82
|
+
require 'thinking_sphinx/hooks/guard_presence'
|
72
83
|
require 'thinking_sphinx/index'
|
73
84
|
require 'thinking_sphinx/indexing_strategies/all_at_once'
|
74
85
|
require 'thinking_sphinx/indexing_strategies/one_at_a_time'
|
75
86
|
require 'thinking_sphinx/index_set'
|
76
|
-
require 'thinking_sphinx/interfaces
|
77
|
-
require 'thinking_sphinx/interfaces/real_time'
|
78
|
-
require 'thinking_sphinx/interfaces/sql'
|
87
|
+
require 'thinking_sphinx/interfaces'
|
79
88
|
require 'thinking_sphinx/masks'
|
80
89
|
require 'thinking_sphinx/middlewares'
|
81
90
|
require 'thinking_sphinx/panes'
|
@@ -83,7 +92,7 @@ require 'thinking_sphinx/query'
|
|
83
92
|
require 'thinking_sphinx/rake_interface'
|
84
93
|
require 'thinking_sphinx/scopes'
|
85
94
|
require 'thinking_sphinx/search'
|
86
|
-
require 'thinking_sphinx/
|
95
|
+
require 'thinking_sphinx/settings'
|
87
96
|
require 'thinking_sphinx/subscribers/populator_subscriber'
|
88
97
|
require 'thinking_sphinx/test'
|
89
98
|
require 'thinking_sphinx/utf8'
|
@@ -96,3 +105,5 @@ require 'thinking_sphinx/logger'
|
|
96
105
|
require 'thinking_sphinx/real_time'
|
97
106
|
|
98
107
|
require 'thinking_sphinx/railtie' if defined?(Rails::Railtie)
|
108
|
+
|
109
|
+
ThinkingSphinx.before_index_hooks << ThinkingSphinx::Hooks::GuardPresence
|
@@ -1,8 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_record'
|
2
4
|
require 'joiner'
|
3
5
|
|
4
6
|
module ThinkingSphinx::ActiveRecord
|
5
7
|
module Callbacks; end
|
8
|
+
module Depolymorph; end
|
6
9
|
end
|
7
10
|
|
8
11
|
require 'thinking_sphinx/active_record/property'
|
@@ -14,7 +17,6 @@ require 'thinking_sphinx/active_record/column'
|
|
14
17
|
require 'thinking_sphinx/active_record/column_sql_presenter'
|
15
18
|
require 'thinking_sphinx/active_record/database_adapters'
|
16
19
|
require 'thinking_sphinx/active_record/field'
|
17
|
-
require 'thinking_sphinx/active_record/filter_reflection'
|
18
20
|
require 'thinking_sphinx/active_record/index'
|
19
21
|
require 'thinking_sphinx/active_record/interpreter'
|
20
22
|
require 'thinking_sphinx/active_record/join_association'
|
@@ -30,3 +32,10 @@ require 'thinking_sphinx/active_record/sql_source'
|
|
30
32
|
require 'thinking_sphinx/active_record/callbacks/delete_callbacks'
|
31
33
|
require 'thinking_sphinx/active_record/callbacks/delta_callbacks'
|
32
34
|
require 'thinking_sphinx/active_record/callbacks/update_callbacks'
|
35
|
+
|
36
|
+
require 'thinking_sphinx/active_record/depolymorph/base_reflection'
|
37
|
+
require 'thinking_sphinx/active_record/depolymorph/association_reflection'
|
38
|
+
require 'thinking_sphinx/active_record/depolymorph/conditions_reflection'
|
39
|
+
require 'thinking_sphinx/active_record/depolymorph/overridden_reflection'
|
40
|
+
require 'thinking_sphinx/active_record/depolymorph/scoped_reflection'
|
41
|
+
require 'thinking_sphinx/active_record/filter_reflection'
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# This custom association approach is only available in Rails 4.1-5.1. This
|
4
|
+
# behaviour is superseded by OverriddenReflection for Rails 5.2, and was
|
5
|
+
# preceded by ScopedReflection for Rails 4.0.
|
6
|
+
class ThinkingSphinx::ActiveRecord::Depolymorph::AssociationReflection <
|
7
|
+
ThinkingSphinx::ActiveRecord::Depolymorph::BaseReflection
|
8
|
+
|
9
|
+
# Since Rails 4.2, the macro argument has been removed. The underlying
|
10
|
+
# behaviour remains the same, though.
|
11
|
+
def call
|
12
|
+
if explicit_macro?
|
13
|
+
klass.new name, nil, options, reflection.active_record
|
14
|
+
else
|
15
|
+
klass.new reflection.macro, name, nil, options, reflection.active_record
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def explicit_macro?
|
22
|
+
ActiveRecord::Reflection::MacroReflection.instance_method(:initialize).
|
23
|
+
arity == 4
|
24
|
+
end
|
25
|
+
|
26
|
+
def options
|
27
|
+
super
|
28
|
+
|
29
|
+
@options[:sphinx_internal_filtered] = true
|
30
|
+
@options
|
31
|
+
end
|
32
|
+
end
|