sunspot 0.9.8 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +32 -0
- data/README.rdoc +40 -3
- data/TODO +10 -8
- data/VERSION.yml +2 -2
- data/bin/sunspot-configure-solr +22 -28
- data/bin/sunspot-solr +50 -29
- data/lib/sunspot/adapters.rb +1 -1
- data/lib/sunspot/composite_setup.rb +13 -15
- data/lib/sunspot/configuration.rb +14 -0
- data/lib/sunspot/data_extractor.rb +3 -0
- data/lib/sunspot/dsl/field_query.rb +33 -6
- data/lib/sunspot/dsl/fields.rb +14 -1
- data/lib/sunspot/dsl/fulltext.rb +168 -0
- data/lib/sunspot/dsl/query.rb +82 -5
- data/lib/sunspot/dsl/query_facet.rb +3 -3
- data/lib/sunspot/dsl/restriction.rb +7 -7
- data/lib/sunspot/dsl/scope.rb +17 -10
- data/lib/sunspot/dsl/search.rb +2 -2
- data/lib/sunspot/dsl.rb +2 -1
- data/lib/sunspot/facet.rb +9 -1
- data/lib/sunspot/facet_data.rb +56 -7
- data/lib/sunspot/facet_row.rb +2 -0
- data/lib/sunspot/field.rb +50 -26
- data/lib/sunspot/field_factory.rb +15 -0
- data/lib/sunspot/indexer.rb +6 -0
- data/lib/sunspot/instantiated_facet.rb +6 -9
- data/lib/sunspot/instantiated_facet_row.rb +7 -2
- data/lib/sunspot/query/boost_query.rb +20 -0
- data/lib/sunspot/query/connective.rb +98 -35
- data/lib/sunspot/query/dismax.rb +69 -0
- data/lib/sunspot/query/field_facet.rb +1 -22
- data/lib/sunspot/query/fulltext_base_query.rb +47 -0
- data/lib/sunspot/query/highlighting.rb +43 -0
- data/lib/sunspot/query/local.rb +24 -0
- data/lib/sunspot/query/pagination.rb +3 -4
- data/lib/sunspot/query/query.rb +93 -0
- data/lib/sunspot/query/query_facet.rb +14 -9
- data/lib/sunspot/query/query_facet_row.rb +3 -3
- data/lib/sunspot/query/query_field_facet.rb +10 -3
- data/lib/sunspot/query/restriction.rb +36 -15
- data/lib/sunspot/query/scope.rb +3 -159
- data/lib/sunspot/query/sort.rb +84 -15
- data/lib/sunspot/query/text_field_boost.rb +15 -0
- data/lib/sunspot/query.rb +2 -188
- data/lib/sunspot/schema.rb +7 -25
- data/lib/sunspot/search/highlight.rb +38 -0
- data/lib/sunspot/search/hit.rb +50 -3
- data/lib/sunspot/search.rb +51 -32
- data/lib/sunspot/session.rb +32 -12
- data/lib/sunspot/setup.rb +47 -10
- data/lib/sunspot/text_field_setup.rb +29 -0
- data/lib/sunspot/type.rb +4 -4
- data/lib/sunspot/util.rb +27 -1
- data/lib/sunspot.rb +8 -17
- data/solr/solr/conf/schema.xml +54 -40
- data/solr/solr/conf/solrconfig.xml +30 -0
- data/solr/solr/lib/geoapi-nogenerics-2.1-M2.jar +0 -0
- data/solr/solr/lib/gt2-referencing-2.3.1.jar +0 -0
- data/solr/solr/lib/jsr108-0.01.jar +0 -0
- data/solr/solr/lib/locallucene.jar +0 -0
- data/solr/solr/lib/localsolr.jar +0 -0
- data/spec/api/indexer/attributes_spec.rb +100 -0
- data/spec/api/indexer/batch_spec.rb +46 -0
- data/spec/api/indexer/dynamic_fields_spec.rb +33 -0
- data/spec/api/indexer/fixed_fields_spec.rb +57 -0
- data/spec/api/indexer/fulltext_spec.rb +43 -0
- data/spec/api/indexer/removal_spec.rb +46 -0
- data/spec/api/indexer/spec_helper.rb +1 -0
- data/spec/api/indexer_spec.rb +1 -308
- data/spec/api/query/connectives_spec.rb +162 -0
- data/spec/api/query/dsl_spec.rb +12 -0
- data/spec/api/query/dynamic_fields_spec.rb +149 -0
- data/spec/api/query/faceting_spec.rb +272 -0
- data/spec/api/query/fulltext_spec.rb +193 -0
- data/spec/api/query/highlighting_spec.rb +138 -0
- data/spec/api/query/local_spec.rb +54 -0
- data/spec/api/query/ordering_pagination_spec.rb +95 -0
- data/spec/api/query/scope_spec.rb +266 -0
- data/spec/api/query/spec_helper.rb +1 -0
- data/spec/api/query/text_field_scoping_spec.rb +30 -0
- data/spec/api/query/types_spec.rb +20 -0
- data/spec/api/search/dynamic_fields_spec.rb +27 -0
- data/spec/api/search/faceting_spec.rb +206 -0
- data/spec/api/search/highlighting_spec.rb +65 -0
- data/spec/api/search/hits_spec.rb +62 -0
- data/spec/api/search/results_spec.rb +52 -0
- data/spec/api/search/search_spec.rb +23 -0
- data/spec/api/search/spec_helper.rb +1 -0
- data/spec/api/spec_helper.rb +1 -1
- data/spec/helpers/indexer_helper.rb +29 -0
- data/spec/helpers/query_helper.rb +13 -0
- data/spec/helpers/search_helper.rb +78 -0
- data/spec/integration/faceting_spec.rb +1 -1
- data/spec/integration/highlighting_spec.rb +22 -0
- data/spec/integration/keyword_search_spec.rb +65 -0
- data/spec/integration/local_search_spec.rb +56 -0
- data/spec/integration/scoped_search_spec.rb +15 -1
- data/spec/integration/spec_helper.rb +3 -3
- data/spec/mocks/connection.rb +14 -1
- data/spec/mocks/photo.rb +1 -1
- data/spec/mocks/post.rb +5 -3
- data/spec/mocks/super_class.rb +2 -0
- data/spec/spec_helper.rb +13 -0
- data/tasks/gemspec.rake +18 -7
- data/tasks/schema.rake +1 -1
- data/tasks/spec.rake +1 -1
- data/templates/schema.xml.erb +36 -0
- metadata +117 -48
- data/lib/sunspot/query/base_query.rb +0 -90
- data/lib/sunspot/query/dynamic_query.rb +0 -69
- data/lib/sunspot/query/field_query.rb +0 -63
- data/spec/api/build_search_spec.rb +0 -1017
- data/spec/api/query_spec.rb +0 -153
- data/spec/api/search_retrieval_spec.rb +0 -362
- data/templates/schema.xml.haml +0 -24
@@ -1,69 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Query
|
3
|
-
#
|
4
|
-
# A dynamic query is a proxy object that implements the API of the FieldQuery
|
5
|
-
# class, but wraps a dynamic field factory and thus applies the query
|
6
|
-
# components using dynamic field instances.
|
7
|
-
#--
|
8
|
-
# Dynamic queries do not hold their own state, but rather proxy to the query
|
9
|
-
# that generated them, adding components directly to the owning query's
|
10
|
-
# internal state.
|
11
|
-
#++
|
12
|
-
# DynamicQuery instances are publicly generated by the Query#dynamic_query
|
13
|
-
# factory method.
|
14
|
-
#
|
15
|
-
class DynamicQuery < FieldQuery
|
16
|
-
def initialize(dynamic_field_factory, query) #:nodoc:
|
17
|
-
@dynamic_field_factory, @query = dynamic_field_factory, query
|
18
|
-
end
|
19
|
-
|
20
|
-
#
|
21
|
-
# This has the same effect as calling Query#exclude_instance; it is
|
22
|
-
# included for interface completeness.
|
23
|
-
#
|
24
|
-
def exclude_instance(instance)
|
25
|
-
@query.exclude_instance(instance)
|
26
|
-
end
|
27
|
-
|
28
|
-
#
|
29
|
-
# This has the same effect as calling Query#exclude_instance; it is
|
30
|
-
# included for interface completeness.
|
31
|
-
#
|
32
|
-
def dynamic_query(field_name)
|
33
|
-
@query.dynamic_query(field_name)
|
34
|
-
end
|
35
|
-
|
36
|
-
#
|
37
|
-
# Add a Sort to the query
|
38
|
-
#
|
39
|
-
def add_sort(sort) #:nodoc:
|
40
|
-
@query.add_sort(sort)
|
41
|
-
end
|
42
|
-
|
43
|
-
#
|
44
|
-
# Add a component to the query
|
45
|
-
#
|
46
|
-
def add_component(component) #:nodoc:
|
47
|
-
@query.add_component(component)
|
48
|
-
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
#
|
53
|
-
# DynamicFieldFactory implements the part of the Setup interface that we
|
54
|
-
# need, so methods in DynamicQuery's superclasses can rely on it without
|
55
|
-
# knowing what it is.
|
56
|
-
#
|
57
|
-
def setup
|
58
|
-
@dynamic_field_factory
|
59
|
-
end
|
60
|
-
|
61
|
-
#
|
62
|
-
# So query facets can be added to the query from within dynamic queries
|
63
|
-
#
|
64
|
-
def query_facets
|
65
|
-
@query.query_facets
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
module Sunspot
|
2
|
-
module Query
|
3
|
-
#
|
4
|
-
# This class acts as a base class for query components that encapsulate
|
5
|
-
# operations on fields. It is subclassed by the Query::Query class and the
|
6
|
-
# Query::DynamicQuery class.
|
7
|
-
#
|
8
|
-
class FieldQuery < Scope
|
9
|
-
#
|
10
|
-
# Add a field facet. See Sunspot::Facet for more information.
|
11
|
-
#
|
12
|
-
# ==== Parameters
|
13
|
-
#
|
14
|
-
# field_name<Symbol>:: Name of the field on which to get a facet
|
15
|
-
#
|
16
|
-
# ==== Returns
|
17
|
-
#
|
18
|
-
# FieldFacet:: The field facet object
|
19
|
-
#
|
20
|
-
def add_field_facet(field_name, options = nil)
|
21
|
-
options ||= {}
|
22
|
-
facet =
|
23
|
-
if only = options.delete(:only)
|
24
|
-
query_facets[field_name.to_sym] = QueryFieldFacet.new(@setup.field(field_name), only)
|
25
|
-
else
|
26
|
-
FieldFacet.build(build_field(field_name), options)
|
27
|
-
end
|
28
|
-
add_component(facet)
|
29
|
-
end
|
30
|
-
|
31
|
-
#
|
32
|
-
# Add a query facet.
|
33
|
-
#
|
34
|
-
# ==== Parameters
|
35
|
-
#
|
36
|
-
# name<Symbol>::
|
37
|
-
# The name associated with the query facet. This is not passed to Solr,
|
38
|
-
# but allows the user to retrieve the facet result by passing the name
|
39
|
-
# to the Search#facet method.
|
40
|
-
#
|
41
|
-
# ==== Returns
|
42
|
-
#
|
43
|
-
# QueryFacet:: The query facet object
|
44
|
-
#
|
45
|
-
def add_query_facet(name)
|
46
|
-
add_component(facet = QueryFacet.new(name, setup))
|
47
|
-
query_facets[name.to_sym] = facet
|
48
|
-
end
|
49
|
-
|
50
|
-
#
|
51
|
-
# Set result ordering.
|
52
|
-
#
|
53
|
-
# ==== Parameters
|
54
|
-
#
|
55
|
-
# field_name<Symbol>:: Name of the field on which to order
|
56
|
-
# direction<Symbol>:: :asc or :desc (default :asc)
|
57
|
-
#
|
58
|
-
def order_by(field_name, direction = nil)
|
59
|
-
add_sort(Sort.new(build_field(field_name), direction))
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|