sunspot_rails 2.0.0.pre.120924 → 2.0.0.pre.120925
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +6 -10
- data/{sunspot_rails/.rspec → .rspec} +0 -0
- data/{sunspot_rails/History.txt → History.txt} +0 -0
- data/{sunspot/LICENSE → LICENSE} +0 -0
- data/{sunspot_rails/MIT-LICENSE → MIT-LICENSE} +0 -0
- data/{sunspot_rails/README.rdoc → README.rdoc} +0 -0
- data/Rakefile +12 -32
- data/{sunspot_rails/TODO → TODO} +0 -0
- data/{sunspot_rails/dev_tasks → dev_tasks}/rdoc.rake +0 -0
- data/{sunspot_rails/dev_tasks → dev_tasks}/release.rake +0 -0
- data/{sunspot_rails/dev_tasks → dev_tasks}/spec.rake +0 -0
- data/{sunspot/tasks → dev_tasks}/todo.rake +0 -0
- data/{sunspot_rails/gemfiles → gemfiles}/rails-2.3.14 +0 -0
- data/{sunspot_rails/gemfiles → gemfiles}/rails-3.0.15 +0 -0
- data/{sunspot_rails/gemfiles → gemfiles}/rails-3.1.6 +0 -0
- data/{sunspot_rails/gemfiles → gemfiles}/rails-3.2.6 +0 -0
- data/{sunspot_rails/generators → generators}/sunspot/sunspot_generator.rb +0 -0
- data/{sunspot_rails/generators → generators}/sunspot/templates/sunspot.yml +0 -0
- data/{sunspot_rails/install.rb → install.rb} +0 -0
- data/{sunspot_rails/lib → lib}/generators/sunspot_rails.rb +0 -0
- data/{sunspot_rails/lib → lib}/generators/sunspot_rails/install/install_generator.rb +0 -0
- data/{sunspot_rails/lib → lib}/generators/sunspot_rails/install/templates/config/sunspot.yml +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/adapters.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/configuration.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/init.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/log_subscriber.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/railtie.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/railties/controller_runtime.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/request_lifecycle.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/searchable.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/server.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/solr_instrumentation.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/solr_logging.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/spec_helper.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/stub_session_proxy.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot/rails/tasks.rb +0 -0
- data/{sunspot_rails/lib → lib}/sunspot_rails.rb +0 -0
- data/{sunspot_rails/spec → spec}/configuration_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/model_lifecycle_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/model_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/controllers/application_controller.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/controllers/posts_controller.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/author.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/blog.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/location.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/photo_post.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/post.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/post_with_auto.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/app/models/post_with_default_scope.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/config/boot.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/config/preinitializer.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/config/routes.rb +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/config/sunspot.yml +0 -0
- data/{sunspot_rails/spec → spec}/rails_template/db/schema.rb +0 -0
- data/{sunspot_rails/spec → spec}/request_lifecycle_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/schema.rb +0 -0
- data/{sunspot_rails/spec → spec}/searchable_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/server_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/session_spec.rb +0 -0
- data/{sunspot_rails/spec → spec}/shared_examples/indexed_after_save.rb +0 -0
- data/{sunspot_rails/spec → spec}/shared_examples/not_indexed_after_save.rb +0 -0
- data/{sunspot_rails/spec → spec}/spec_helper.rb +0 -0
- data/{sunspot_rails/spec → spec}/stub_session_proxy_spec.rb +0 -0
- data/{sunspot_rails/sunspot_rails.gemspec → sunspot_rails.gemspec} +0 -0
- metadata +102 -305
- data/.travis.yml +0 -35
- data/README.md +0 -863
- data/ci/travis.sh +0 -67
- data/sunspot/.gitignore +0 -13
- data/sunspot/Gemfile +0 -5
- data/sunspot/History.txt +0 -258
- data/sunspot/Rakefile +0 -13
- data/sunspot/TODO +0 -13
- data/sunspot/lib/light_config.rb +0 -40
- data/sunspot/lib/sunspot.rb +0 -579
- data/sunspot/lib/sunspot/adapters.rb +0 -349
- data/sunspot/lib/sunspot/batcher.rb +0 -62
- data/sunspot/lib/sunspot/class_set.rb +0 -23
- data/sunspot/lib/sunspot/composite_setup.rb +0 -202
- data/sunspot/lib/sunspot/configuration.rb +0 -53
- data/sunspot/lib/sunspot/data_extractor.rb +0 -50
- data/sunspot/lib/sunspot/dsl.rb +0 -5
- data/sunspot/lib/sunspot/dsl/adjustable.rb +0 -47
- data/sunspot/lib/sunspot/dsl/field_group.rb +0 -57
- data/sunspot/lib/sunspot/dsl/field_query.rb +0 -345
- data/sunspot/lib/sunspot/dsl/fields.rb +0 -103
- data/sunspot/lib/sunspot/dsl/fulltext.rb +0 -243
- data/sunspot/lib/sunspot/dsl/function.rb +0 -27
- data/sunspot/lib/sunspot/dsl/functional.rb +0 -44
- data/sunspot/lib/sunspot/dsl/more_like_this_query.rb +0 -56
- data/sunspot/lib/sunspot/dsl/paginatable.rb +0 -32
- data/sunspot/lib/sunspot/dsl/query_facet.rb +0 -36
- data/sunspot/lib/sunspot/dsl/restriction.rb +0 -25
- data/sunspot/lib/sunspot/dsl/restriction_with_near.rb +0 -160
- data/sunspot/lib/sunspot/dsl/scope.rb +0 -214
- data/sunspot/lib/sunspot/dsl/search.rb +0 -30
- data/sunspot/lib/sunspot/dsl/standard_query.rb +0 -122
- data/sunspot/lib/sunspot/field.rb +0 -193
- data/sunspot/lib/sunspot/field_factory.rb +0 -129
- data/sunspot/lib/sunspot/indexer.rb +0 -136
- data/sunspot/lib/sunspot/query.rb +0 -11
- data/sunspot/lib/sunspot/query/abstract_field_facet.rb +0 -55
- data/sunspot/lib/sunspot/query/bbox.rb +0 -15
- data/sunspot/lib/sunspot/query/boost_query.rb +0 -24
- data/sunspot/lib/sunspot/query/common_query.rb +0 -96
- data/sunspot/lib/sunspot/query/composite_fulltext.rb +0 -36
- data/sunspot/lib/sunspot/query/connective.rb +0 -206
- data/sunspot/lib/sunspot/query/date_field_facet.rb +0 -14
- data/sunspot/lib/sunspot/query/dismax.rb +0 -132
- data/sunspot/lib/sunspot/query/field_facet.rb +0 -41
- data/sunspot/lib/sunspot/query/field_group.rb +0 -37
- data/sunspot/lib/sunspot/query/filter.rb +0 -38
- data/sunspot/lib/sunspot/query/function_query.rb +0 -52
- data/sunspot/lib/sunspot/query/geo.rb +0 -53
- data/sunspot/lib/sunspot/query/geofilt.rb +0 -16
- data/sunspot/lib/sunspot/query/highlighting.rb +0 -62
- data/sunspot/lib/sunspot/query/more_like_this.rb +0 -61
- data/sunspot/lib/sunspot/query/more_like_this_query.rb +0 -12
- data/sunspot/lib/sunspot/query/pagination.rb +0 -42
- data/sunspot/lib/sunspot/query/query_facet.rb +0 -53
- data/sunspot/lib/sunspot/query/range_facet.rb +0 -15
- data/sunspot/lib/sunspot/query/restriction.rb +0 -308
- data/sunspot/lib/sunspot/query/scope.rb +0 -9
- data/sunspot/lib/sunspot/query/sort.rb +0 -109
- data/sunspot/lib/sunspot/query/sort_composite.rb +0 -34
- data/sunspot/lib/sunspot/query/standard_query.rb +0 -16
- data/sunspot/lib/sunspot/query/text_field_boost.rb +0 -17
- data/sunspot/lib/sunspot/schema.rb +0 -151
- data/sunspot/lib/sunspot/search.rb +0 -9
- data/sunspot/lib/sunspot/search/abstract_search.rb +0 -286
- data/sunspot/lib/sunspot/search/date_facet.rb +0 -35
- data/sunspot/lib/sunspot/search/facet_row.rb +0 -27
- data/sunspot/lib/sunspot/search/field_facet.rb +0 -88
- data/sunspot/lib/sunspot/search/field_group.rb +0 -70
- data/sunspot/lib/sunspot/search/group.rb +0 -54
- data/sunspot/lib/sunspot/search/highlight.rb +0 -38
- data/sunspot/lib/sunspot/search/hit.rb +0 -150
- data/sunspot/lib/sunspot/search/hit_enumerable.rb +0 -68
- data/sunspot/lib/sunspot/search/more_like_this_search.rb +0 -31
- data/sunspot/lib/sunspot/search/paginated_collection.rb +0 -57
- data/sunspot/lib/sunspot/search/query_facet.rb +0 -67
- data/sunspot/lib/sunspot/search/range_facet.rb +0 -37
- data/sunspot/lib/sunspot/search/standard_search.rb +0 -21
- data/sunspot/lib/sunspot/session.rb +0 -262
- data/sunspot/lib/sunspot/session_proxy.rb +0 -95
- data/sunspot/lib/sunspot/session_proxy/abstract_session_proxy.rb +0 -29
- data/sunspot/lib/sunspot/session_proxy/class_sharding_session_proxy.rb +0 -66
- data/sunspot/lib/sunspot/session_proxy/id_sharding_session_proxy.rb +0 -89
- data/sunspot/lib/sunspot/session_proxy/master_slave_session_proxy.rb +0 -43
- data/sunspot/lib/sunspot/session_proxy/retry_5xx_session_proxy.rb +0 -67
- data/sunspot/lib/sunspot/session_proxy/sharding_session_proxy.rb +0 -222
- data/sunspot/lib/sunspot/session_proxy/silent_fail_session_proxy.rb +0 -42
- data/sunspot/lib/sunspot/session_proxy/thread_local_session_proxy.rb +0 -37
- data/sunspot/lib/sunspot/setup.rb +0 -350
- data/sunspot/lib/sunspot/text_field_setup.rb +0 -29
- data/sunspot/lib/sunspot/type.rb +0 -393
- data/sunspot/lib/sunspot/util.rb +0 -252
- data/sunspot/lib/sunspot/version.rb +0 -3
- data/sunspot/script/console +0 -10
- data/sunspot/spec/api/adapters_spec.rb +0 -68
- data/sunspot/spec/api/batcher_spec.rb +0 -112
- data/sunspot/spec/api/binding_spec.rb +0 -50
- data/sunspot/spec/api/class_set_spec.rb +0 -24
- data/sunspot/spec/api/hit_enumerable_spec.rb +0 -47
- data/sunspot/spec/api/indexer/attributes_spec.rb +0 -149
- data/sunspot/spec/api/indexer/batch_spec.rb +0 -72
- data/sunspot/spec/api/indexer/dynamic_fields_spec.rb +0 -42
- data/sunspot/spec/api/indexer/fixed_fields_spec.rb +0 -57
- data/sunspot/spec/api/indexer/fulltext_spec.rb +0 -43
- data/sunspot/spec/api/indexer/removal_spec.rb +0 -53
- data/sunspot/spec/api/indexer/spec_helper.rb +0 -1
- data/sunspot/spec/api/indexer_spec.rb +0 -14
- data/sunspot/spec/api/query/advanced_manipulation_examples.rb +0 -35
- data/sunspot/spec/api/query/connectives_examples.rb +0 -201
- data/sunspot/spec/api/query/dsl_spec.rb +0 -18
- data/sunspot/spec/api/query/dynamic_fields_examples.rb +0 -165
- data/sunspot/spec/api/query/faceting_examples.rb +0 -497
- data/sunspot/spec/api/query/fulltext_examples.rb +0 -313
- data/sunspot/spec/api/query/function_spec.rb +0 -79
- data/sunspot/spec/api/query/geo_examples.rb +0 -68
- data/sunspot/spec/api/query/group_spec.rb +0 -32
- data/sunspot/spec/api/query/highlighting_examples.rb +0 -245
- data/sunspot/spec/api/query/more_like_this_spec.rb +0 -140
- data/sunspot/spec/api/query/ordering_pagination_examples.rb +0 -116
- data/sunspot/spec/api/query/scope_examples.rb +0 -275
- data/sunspot/spec/api/query/spatial_examples.rb +0 -27
- data/sunspot/spec/api/query/spec_helper.rb +0 -1
- data/sunspot/spec/api/query/standard_spec.rb +0 -29
- data/sunspot/spec/api/query/text_field_scoping_examples.rb +0 -30
- data/sunspot/spec/api/query/types_spec.rb +0 -20
- data/sunspot/spec/api/search/dynamic_fields_spec.rb +0 -33
- data/sunspot/spec/api/search/faceting_spec.rb +0 -360
- data/sunspot/spec/api/search/highlighting_spec.rb +0 -69
- data/sunspot/spec/api/search/hits_spec.rb +0 -147
- data/sunspot/spec/api/search/paginated_collection_spec.rb +0 -36
- data/sunspot/spec/api/search/results_spec.rb +0 -72
- data/sunspot/spec/api/search/search_spec.rb +0 -23
- data/sunspot/spec/api/search/spec_helper.rb +0 -1
- data/sunspot/spec/api/session_proxy/class_sharding_session_proxy_spec.rb +0 -85
- data/sunspot/spec/api/session_proxy/id_sharding_session_proxy_spec.rb +0 -30
- data/sunspot/spec/api/session_proxy/master_slave_session_proxy_spec.rb +0 -41
- data/sunspot/spec/api/session_proxy/retry_5xx_session_proxy_spec.rb +0 -78
- data/sunspot/spec/api/session_proxy/sharding_session_proxy_spec.rb +0 -77
- data/sunspot/spec/api/session_proxy/silent_fail_session_proxy_spec.rb +0 -24
- data/sunspot/spec/api/session_proxy/spec_helper.rb +0 -9
- data/sunspot/spec/api/session_proxy/thread_local_session_proxy_spec.rb +0 -39
- data/sunspot/spec/api/session_spec.rb +0 -232
- data/sunspot/spec/api/spec_helper.rb +0 -3
- data/sunspot/spec/api/sunspot_spec.rb +0 -29
- data/sunspot/spec/ext.rb +0 -11
- data/sunspot/spec/helpers/indexer_helper.rb +0 -17
- data/sunspot/spec/helpers/integration_helper.rb +0 -8
- data/sunspot/spec/helpers/mock_session_helper.rb +0 -13
- data/sunspot/spec/helpers/query_helper.rb +0 -26
- data/sunspot/spec/helpers/search_helper.rb +0 -68
- data/sunspot/spec/integration/dynamic_fields_spec.rb +0 -57
- data/sunspot/spec/integration/faceting_spec.rb +0 -330
- data/sunspot/spec/integration/field_grouping_spec.rb +0 -100
- data/sunspot/spec/integration/geospatial_spec.rb +0 -96
- data/sunspot/spec/integration/highlighting_spec.rb +0 -44
- data/sunspot/spec/integration/indexing_spec.rb +0 -55
- data/sunspot/spec/integration/keyword_search_spec.rb +0 -317
- data/sunspot/spec/integration/local_search_spec.rb +0 -64
- data/sunspot/spec/integration/more_like_this_spec.rb +0 -43
- data/sunspot/spec/integration/scoped_search_spec.rb +0 -386
- data/sunspot/spec/integration/stored_fields_spec.rb +0 -12
- data/sunspot/spec/integration/test_pagination.rb +0 -43
- data/sunspot/spec/integration/unicode_spec.rb +0 -15
- data/sunspot/spec/mocks/adapters.rb +0 -33
- data/sunspot/spec/mocks/blog.rb +0 -3
- data/sunspot/spec/mocks/comment.rb +0 -21
- data/sunspot/spec/mocks/connection.rb +0 -126
- data/sunspot/spec/mocks/mock_adapter.rb +0 -30
- data/sunspot/spec/mocks/mock_class_sharding_session_proxy.rb +0 -24
- data/sunspot/spec/mocks/mock_record.rb +0 -52
- data/sunspot/spec/mocks/mock_sharding_session_proxy.rb +0 -15
- data/sunspot/spec/mocks/photo.rb +0 -11
- data/sunspot/spec/mocks/post.rb +0 -86
- data/sunspot/spec/mocks/super_class.rb +0 -2
- data/sunspot/spec/mocks/user.rb +0 -13
- data/sunspot/spec/spec_helper.rb +0 -40
- data/sunspot/sunspot.gemspec +0 -37
- data/sunspot/tasks/rdoc.rake +0 -27
- data/sunspot/tasks/schema.rake +0 -19
- data/sunspot_rails/.gitignore +0 -7
- data/sunspot_rails/LICENSE +0 -18
- data/sunspot_rails/Rakefile +0 -17
- data/sunspot_rails/dev_tasks/todo.rake +0 -4
- data/sunspot_solr/Gemfile +0 -3
- data/sunspot_solr/README.rdoc +0 -24
- data/sunspot_solr/bin/sunspot-installer +0 -20
- data/sunspot_solr/bin/sunspot-solr +0 -80
- data/sunspot_solr/lib/sunspot/solr/installer.rb +0 -25
- data/sunspot_solr/lib/sunspot/solr/installer/config_installer.rb +0 -46
- data/sunspot_solr/lib/sunspot/solr/installer/task_helper.rb +0 -13
- data/sunspot_solr/lib/sunspot/solr/java.rb +0 -10
- data/sunspot_solr/lib/sunspot/solr/railtie.rb +0 -15
- data/sunspot_solr/lib/sunspot/solr/server.rb +0 -223
- data/sunspot_solr/lib/sunspot/solr/tasks.rb +0 -49
- data/sunspot_solr/lib/sunspot_solr.rb +0 -5
- data/sunspot_solr/solr/README.txt +0 -42
- data/sunspot_solr/solr/etc/jetty.xml +0 -219
- data/sunspot_solr/solr/etc/webdefault.xml +0 -379
- data/sunspot_solr/solr/lib/jetty-6.1.26-patched-JETTY-1340.jar +0 -0
- data/sunspot_solr/solr/lib/jetty-util-6.1.26-patched-JETTY-1340.jar +0 -0
- data/sunspot_solr/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
- data/sunspot_solr/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
- data/sunspot_solr/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
- data/sunspot_solr/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
- data/sunspot_solr/solr/lib/servlet-api-2.5-20081211.jar +0 -0
- data/sunspot_solr/solr/solr/.gitignore +0 -1
- data/sunspot_solr/solr/solr/README.txt +0 -54
- data/sunspot_solr/solr/solr/conf/admin-extra.html +0 -31
- data/sunspot_solr/solr/solr/conf/elevate.xml +0 -36
- data/sunspot_solr/solr/solr/conf/mapping-ISOLatin1Accent.txt +0 -246
- data/sunspot_solr/solr/solr/conf/protwords.txt +0 -21
- data/sunspot_solr/solr/solr/conf/schema.xml +0 -250
- data/sunspot_solr/solr/solr/conf/scripts.conf +0 -24
- data/sunspot_solr/solr/solr/conf/solrconfig.xml +0 -934
- data/sunspot_solr/solr/solr/conf/spellings.txt +0 -2
- data/sunspot_solr/solr/solr/conf/stopwords.txt +0 -58
- data/sunspot_solr/solr/solr/conf/synonyms.txt +0 -31
- data/sunspot_solr/solr/solr/conf/xslt/example.xsl +0 -132
- data/sunspot_solr/solr/solr/conf/xslt/example_atom.xsl +0 -67
- data/sunspot_solr/solr/solr/conf/xslt/example_rss.xsl +0 -66
- data/sunspot_solr/solr/solr/conf/xslt/luke.xsl +0 -337
- data/sunspot_solr/solr/start.jar +0 -0
- data/sunspot_solr/solr/webapps/solr.war +0 -0
- data/sunspot_solr/spec/server_spec.rb +0 -98
- data/sunspot_solr/spec/spec_helper.rb +0 -18
- data/sunspot_solr/sunspot_solr.gemspec +0 -37
- data/tools/gem_tasks.rb +0 -69
@@ -1,14 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Query
|
3
|
-
class DateFieldFacet < AbstractFieldFacet
|
4
|
-
def to_params
|
5
|
-
params = super
|
6
|
-
params[:"facet.date"] = [@field.indexed_name]
|
7
|
-
params[qualified_param('date.start')] = @field.to_indexed(@options[:time_range].first)
|
8
|
-
params[qualified_param('date.end')] = @field.to_indexed(@options[:time_range].last)
|
9
|
-
params[qualified_param('date.gap')] = "+#{@options[:time_interval] || 86400}SECONDS"
|
10
|
-
params
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,132 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Query
|
3
|
-
|
4
|
-
#
|
5
|
-
# Solr full-text queries use Solr's DisMaxRequestHandler, a search handler
|
6
|
-
# designed to process user-entered phrases, and search for individual
|
7
|
-
# words across a union of several fields.
|
8
|
-
#
|
9
|
-
class Dismax
|
10
|
-
attr_writer :minimum_match, :phrase_slop, :query_phrase_slop, :tie
|
11
|
-
|
12
|
-
def initialize(keywords)
|
13
|
-
@keywords = keywords
|
14
|
-
@fulltext_fields = {}
|
15
|
-
@boost_queries = []
|
16
|
-
@boost_functions = []
|
17
|
-
@highlights = []
|
18
|
-
end
|
19
|
-
|
20
|
-
#
|
21
|
-
# The query as Solr parameters
|
22
|
-
#
|
23
|
-
def to_params
|
24
|
-
params = { :q => @keywords }
|
25
|
-
params[:fl] = '* score'
|
26
|
-
params[:qf] = @fulltext_fields.values.map { |field| field.to_boosted_field }.join(' ')
|
27
|
-
params[:defType] = 'dismax'
|
28
|
-
if @phrase_fields
|
29
|
-
params[:pf] = @phrase_fields.map { |field| field.to_boosted_field }.join(' ')
|
30
|
-
end
|
31
|
-
unless @boost_queries.empty?
|
32
|
-
params[:bq] = @boost_queries.map do |boost_query|
|
33
|
-
boost_query.to_boolean_phrase
|
34
|
-
end
|
35
|
-
end
|
36
|
-
unless @boost_functions.empty?
|
37
|
-
params[:bf] = @boost_functions.map do |boost_function|
|
38
|
-
boost_function.to_s
|
39
|
-
end
|
40
|
-
end
|
41
|
-
if @minimum_match
|
42
|
-
params[:mm] = @minimum_match
|
43
|
-
end
|
44
|
-
if @phrase_slop
|
45
|
-
params[:ps] = @phrase_slop
|
46
|
-
end
|
47
|
-
if @query_phrase_slop
|
48
|
-
params[:qs] = @query_phrase_slop
|
49
|
-
end
|
50
|
-
if @tie
|
51
|
-
params[:tie] = @tie
|
52
|
-
end
|
53
|
-
@highlights.each do |highlight|
|
54
|
-
Sunspot::Util.deep_merge!(params, highlight.to_params)
|
55
|
-
end
|
56
|
-
params
|
57
|
-
end
|
58
|
-
|
59
|
-
#
|
60
|
-
# Serialize the query as a Solr nested subquery.
|
61
|
-
#
|
62
|
-
def to_subquery
|
63
|
-
params = self.to_params
|
64
|
-
params.delete :defType
|
65
|
-
params.delete :fl
|
66
|
-
keywords = params.delete(:q)
|
67
|
-
options = params.map { |key, value| escape_param(key, value) }.join(' ')
|
68
|
-
"_query_:\"{!dismax #{options}}#{escape_quotes(keywords)}\""
|
69
|
-
end
|
70
|
-
|
71
|
-
#
|
72
|
-
# Assign a new boost query and return it.
|
73
|
-
#
|
74
|
-
def create_boost_query(factor)
|
75
|
-
@boost_queries << boost_query = BoostQuery.new(factor)
|
76
|
-
boost_query
|
77
|
-
end
|
78
|
-
|
79
|
-
#
|
80
|
-
# Add a boost function
|
81
|
-
#
|
82
|
-
def add_boost_function(function_query)
|
83
|
-
@boost_functions << function_query
|
84
|
-
end
|
85
|
-
|
86
|
-
#
|
87
|
-
# Add a fulltext field to be searched, with optional boost.
|
88
|
-
#
|
89
|
-
def add_fulltext_field(field, boost = nil)
|
90
|
-
@fulltext_fields[field.indexed_name] = TextFieldBoost.new(field, boost)
|
91
|
-
end
|
92
|
-
|
93
|
-
#
|
94
|
-
# Add a phrase field for extra boost.
|
95
|
-
#
|
96
|
-
def add_phrase_field(field, boost = nil)
|
97
|
-
@phrase_fields ||= []
|
98
|
-
@phrase_fields << TextFieldBoost.new(field, boost)
|
99
|
-
end
|
100
|
-
|
101
|
-
#
|
102
|
-
# Set highlighting options for the query. If fields is empty, the
|
103
|
-
# Highlighting object won't pass field names at all, which means
|
104
|
-
# the dismax's :qf parameter will be used by Solr.
|
105
|
-
#
|
106
|
-
def add_highlight(fields=[], options={})
|
107
|
-
@highlights << Highlighting.new(fields, options)
|
108
|
-
end
|
109
|
-
|
110
|
-
#
|
111
|
-
# Determine if a given field is being searched. Used by DSL to avoid
|
112
|
-
# overwriting boost parameters when injecting defaults.
|
113
|
-
#
|
114
|
-
def has_fulltext_field?(field)
|
115
|
-
@fulltext_fields.has_key?(field.indexed_name)
|
116
|
-
end
|
117
|
-
|
118
|
-
|
119
|
-
private
|
120
|
-
|
121
|
-
def escape_param(key, value)
|
122
|
-
"#{key}='#{escape_quotes(Array(value).join(" "))}'"
|
123
|
-
end
|
124
|
-
|
125
|
-
def escape_quotes(value)
|
126
|
-
return value unless value.is_a? String
|
127
|
-
value.gsub(/(['"])/, '\\\\\1')
|
128
|
-
end
|
129
|
-
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
@@ -1,41 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Query
|
3
|
-
class FieldFacet < AbstractFieldFacet
|
4
|
-
def initialize(field, options)
|
5
|
-
if exclude_filters = options[:exclude]
|
6
|
-
@exclude_tag = Util.Array(exclude_filters).map do |filter|
|
7
|
-
filter.tag
|
8
|
-
end.join(',')
|
9
|
-
end
|
10
|
-
super
|
11
|
-
end
|
12
|
-
|
13
|
-
def to_params
|
14
|
-
super.merge(:"facet.field" => [field_name_with_local_params])
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def local_params
|
20
|
-
@local_params ||=
|
21
|
-
begin
|
22
|
-
local_params = {}
|
23
|
-
local_params[:ex] = @exclude_tag if @exclude_tag
|
24
|
-
local_params[:key] = @options[:name] if @options[:name]
|
25
|
-
local_params
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def field_name_with_local_params
|
30
|
-
if local_params.empty?
|
31
|
-
@field.indexed_name
|
32
|
-
else
|
33
|
-
pairs = local_params.map do |key, value|
|
34
|
-
"#{key}=#{value}"
|
35
|
-
end
|
36
|
-
"{!#{pairs.join(' ')}}#{@field.indexed_name}"
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
@@ -1,37 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Query
|
3
|
-
#
|
4
|
-
# A FieldGroup groups by the unique values of a given field.
|
5
|
-
#
|
6
|
-
class FieldGroup
|
7
|
-
attr_accessor :limit, :truncate
|
8
|
-
|
9
|
-
def initialize(field)
|
10
|
-
if field.multiple?
|
11
|
-
raise(ArgumentError, "#{field.name} cannot be used for grouping because it is a multiple-value field")
|
12
|
-
end
|
13
|
-
@field = field
|
14
|
-
|
15
|
-
@sort = SortComposite.new
|
16
|
-
end
|
17
|
-
|
18
|
-
def add_sort(sort)
|
19
|
-
@sort << sort
|
20
|
-
end
|
21
|
-
|
22
|
-
def to_params
|
23
|
-
params = {
|
24
|
-
:group => "true",
|
25
|
-
:"group.ngroups" => "true",
|
26
|
-
:"group.field" => @field.indexed_name
|
27
|
-
}
|
28
|
-
|
29
|
-
params.merge!(@sort.to_params("group."))
|
30
|
-
params[:"group.limit"] = @limit if @limit
|
31
|
-
params[:"group.truncate"] = @truncate if @truncate
|
32
|
-
|
33
|
-
params
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Query
|
3
|
-
module Filter
|
4
|
-
|
5
|
-
#
|
6
|
-
# Express this filter as an :fq parameter; i.e., the boolean phrase,
|
7
|
-
# maybe prefixed by local params.
|
8
|
-
#
|
9
|
-
def to_filter_query
|
10
|
-
if tagged? then "{!tag=#{tag}}#{to_boolean_phrase}"
|
11
|
-
else to_boolean_phrase
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
#
|
16
|
-
# Generate and return a tag that can be attached to this restriction,
|
17
|
-
# for use with multiselect faceting. This needs to be unique, but doesn't
|
18
|
-
# really need to be human-readable, so just generate a string based on the
|
19
|
-
# hash of the boolean phrase.
|
20
|
-
#
|
21
|
-
def tag
|
22
|
-
@tag ||= to_boolean_phrase.hash.abs.to_s(36)
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
#
|
28
|
-
# True if a tag has been generated for this filter (e.g., if it's been
|
29
|
-
# excluded from a given facet). If a tag has not been generated at the
|
30
|
-
# time that the filter query param is requested, then it is not necessary
|
31
|
-
# to include a tag in the local params.
|
32
|
-
#
|
33
|
-
def tagged?
|
34
|
-
!!@tag
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Query
|
3
|
-
#
|
4
|
-
# Abstract class for function queries.
|
5
|
-
#
|
6
|
-
class FunctionQuery
|
7
|
-
include RSolr::Char
|
8
|
-
end
|
9
|
-
|
10
|
-
#
|
11
|
-
# Function query which represents a constant.
|
12
|
-
#
|
13
|
-
class ConstantFunctionQuery < FunctionQuery
|
14
|
-
def initialize(constant)
|
15
|
-
@constant = constant
|
16
|
-
end
|
17
|
-
|
18
|
-
def to_s
|
19
|
-
Type.to_literal(@constant)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
#
|
24
|
-
# Function query which represents a field.
|
25
|
-
#
|
26
|
-
class FieldFunctionQuery < FunctionQuery
|
27
|
-
def initialize(field)
|
28
|
-
@field = field
|
29
|
-
end
|
30
|
-
|
31
|
-
def to_s
|
32
|
-
"#{escape(@field.indexed_name)}"
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
#
|
37
|
-
# Function query which represents an actual function invocation.
|
38
|
-
# Takes a function name and arguments as parameters.
|
39
|
-
# Arguments are in turn FunctionQuery objects.
|
40
|
-
#
|
41
|
-
class FunctionalFunctionQuery < FunctionQuery
|
42
|
-
def initialize(function_name, function_args)
|
43
|
-
@function_name, @function_args = function_name, function_args
|
44
|
-
end
|
45
|
-
|
46
|
-
def to_s
|
47
|
-
params = @function_args.map { |arg| arg.to_s }.join(",")
|
48
|
-
"#{@function_name}(#{params})"
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
@@ -1,53 +0,0 @@
|
|
1
|
-
begin
|
2
|
-
require 'geohash'
|
3
|
-
rescue LoadError => e
|
4
|
-
require 'pr_geohash'
|
5
|
-
end
|
6
|
-
|
7
|
-
module Sunspot
|
8
|
-
module Query
|
9
|
-
class Geo
|
10
|
-
MAX_PRECISION = 12
|
11
|
-
DEFAULT_PRECISION = 7
|
12
|
-
DEFAULT_PRECISION_FACTOR = 16.0
|
13
|
-
|
14
|
-
def initialize(field, lat, lng, options)
|
15
|
-
@field, @options = field, options
|
16
|
-
@geohash = GeoHash.encode(lat.to_f, lng.to_f, MAX_PRECISION)
|
17
|
-
end
|
18
|
-
|
19
|
-
def to_params
|
20
|
-
{ :q => to_boolean_query }
|
21
|
-
end
|
22
|
-
|
23
|
-
def to_subquery
|
24
|
-
"(#{to_boolean_query})"
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def to_boolean_query
|
30
|
-
queries = []
|
31
|
-
MAX_PRECISION.downto(precision) do |i|
|
32
|
-
star = i == MAX_PRECISION ? '' : '*'
|
33
|
-
precision_boost = Util.format_float(
|
34
|
-
boost * precision_factor ** (i-MAX_PRECISION).to_f, 3)
|
35
|
-
queries << "#{@field.indexed_name}:#{@geohash[0, i]}#{star}^#{precision_boost}"
|
36
|
-
end
|
37
|
-
queries.join(' OR ')
|
38
|
-
end
|
39
|
-
|
40
|
-
def precision
|
41
|
-
@options[:precision] || DEFAULT_PRECISION
|
42
|
-
end
|
43
|
-
|
44
|
-
def precision_factor
|
45
|
-
@options[:precision_factor] || DEFAULT_PRECISION_FACTOR
|
46
|
-
end
|
47
|
-
|
48
|
-
def boost
|
49
|
-
@options[:boost] || 1.0
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Query
|
3
|
-
class Geofilt
|
4
|
-
def initialize(field, lat, lon, radius, options = {})
|
5
|
-
@field, @lat, @lon, @radius, @options = field, lat, lon, radius, options
|
6
|
-
end
|
7
|
-
|
8
|
-
def to_params
|
9
|
-
func = @options[:bbox] ? "bbox" : "geofilt"
|
10
|
-
|
11
|
-
filter = "{!#{func} sfield=#{@field.indexed_name} pt=#{@lat},#{@lon} d=#{@radius}}"
|
12
|
-
{:fq => filter}
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
@@ -1,62 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Query
|
3
|
-
#
|
4
|
-
# A query component that builds parameters for requesting highlights
|
5
|
-
#
|
6
|
-
class Highlighting #:nodoc:
|
7
|
-
def initialize(fields=[], options={})
|
8
|
-
@fields = fields
|
9
|
-
@options = options
|
10
|
-
end
|
11
|
-
|
12
|
-
#
|
13
|
-
# Return Solr highlighting params
|
14
|
-
#
|
15
|
-
def to_params
|
16
|
-
params = {
|
17
|
-
:hl => 'on',
|
18
|
-
:"hl.simple.pre" => '@@@hl@@@',
|
19
|
-
:"hl.simple.post" => '@@@endhl@@@'
|
20
|
-
}
|
21
|
-
unless @fields.empty?
|
22
|
-
params[:"hl.fl"] = @fields.map { |field| field.indexed_name }
|
23
|
-
end
|
24
|
-
if max_snippets = @options[:max_snippets]
|
25
|
-
params.merge!(make_params('snippets', max_snippets))
|
26
|
-
end
|
27
|
-
if fragment_size = @options[:fragment_size]
|
28
|
-
params.merge!(make_params('fragsize', fragment_size))
|
29
|
-
end
|
30
|
-
if @options[:merge_contiguous_fragments]
|
31
|
-
params.merge!(make_params('mergeContiguous', 'true'))
|
32
|
-
end
|
33
|
-
if @options[:phrase_highlighter]
|
34
|
-
params.merge!(make_params('usePhraseHighlighter', 'true'))
|
35
|
-
if @options[:require_field_match]
|
36
|
-
params.merge!(make_params('requireFieldMatch', 'true'))
|
37
|
-
end
|
38
|
-
end
|
39
|
-
if formatter = @options[:formatter]
|
40
|
-
params.merge!(make_params('formatter', formatter))
|
41
|
-
end
|
42
|
-
if fragmenter = @options[:fragmenter]
|
43
|
-
params.merge!(make_params('fragmenter', fragmenter))
|
44
|
-
end
|
45
|
-
|
46
|
-
params
|
47
|
-
end
|
48
|
-
|
49
|
-
private
|
50
|
-
|
51
|
-
def make_params(name, value)
|
52
|
-
if @fields.empty?
|
53
|
-
{ :"hl.#{name}" => value }
|
54
|
-
else
|
55
|
-
@fields.inject({}) do |hash, field|
|
56
|
-
hash.merge!(:"f.#{field.indexed_name}.hl.#{name}" => value)
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|