nuatt_sunspot 1.1.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. data/History.txt +198 -0
  2. data/LICENSE +18 -0
  3. data/README.rdoc +239 -0
  4. data/Rakefile +11 -0
  5. data/TODO +13 -0
  6. data/VERSION.yml +4 -0
  7. data/bin/sunspot-installer +19 -0
  8. data/bin/sunspot-solr +74 -0
  9. data/installer/config/schema.yml +95 -0
  10. data/lib/light_config.rb +40 -0
  11. data/lib/sunspot.rb +529 -0
  12. data/lib/sunspot/adapters.rb +265 -0
  13. data/lib/sunspot/composite_setup.rb +202 -0
  14. data/lib/sunspot/configuration.rb +46 -0
  15. data/lib/sunspot/data_extractor.rb +50 -0
  16. data/lib/sunspot/dsl.rb +5 -0
  17. data/lib/sunspot/dsl/adjustable.rb +47 -0
  18. data/lib/sunspot/dsl/field_query.rb +266 -0
  19. data/lib/sunspot/dsl/fields.rb +113 -0
  20. data/lib/sunspot/dsl/fulltext.rb +243 -0
  21. data/lib/sunspot/dsl/function.rb +14 -0
  22. data/lib/sunspot/dsl/functional.rb +41 -0
  23. data/lib/sunspot/dsl/more_like_this_query.rb +56 -0
  24. data/lib/sunspot/dsl/paginatable.rb +28 -0
  25. data/lib/sunspot/dsl/query_facet.rb +36 -0
  26. data/lib/sunspot/dsl/restriction.rb +25 -0
  27. data/lib/sunspot/dsl/scope.rb +229 -0
  28. data/lib/sunspot/dsl/search.rb +30 -0
  29. data/lib/sunspot/dsl/standard_query.rb +125 -0
  30. data/lib/sunspot/field.rb +192 -0
  31. data/lib/sunspot/field_factory.rb +147 -0
  32. data/lib/sunspot/indexer.rb +131 -0
  33. data/lib/sunspot/installer.rb +31 -0
  34. data/lib/sunspot/installer/library_installer.rb +45 -0
  35. data/lib/sunspot/installer/schema_builder.rb +219 -0
  36. data/lib/sunspot/installer/solrconfig_updater.rb +106 -0
  37. data/lib/sunspot/installer/task_helper.rb +18 -0
  38. data/lib/sunspot/query.rb +10 -0
  39. data/lib/sunspot/query/abstract_field_facet.rb +52 -0
  40. data/lib/sunspot/query/boost_query.rb +24 -0
  41. data/lib/sunspot/query/common_query.rb +85 -0
  42. data/lib/sunspot/query/composite_fulltext.rb +31 -0
  43. data/lib/sunspot/query/connective.rb +191 -0
  44. data/lib/sunspot/query/date_field_facet.rb +14 -0
  45. data/lib/sunspot/query/dismax.rb +127 -0
  46. data/lib/sunspot/query/field_facet.rb +41 -0
  47. data/lib/sunspot/query/filter.rb +38 -0
  48. data/lib/sunspot/query/function_query.rb +52 -0
  49. data/lib/sunspot/query/highlighting.rb +55 -0
  50. data/lib/sunspot/query/local.rb +26 -0
  51. data/lib/sunspot/query/more_like_this.rb +60 -0
  52. data/lib/sunspot/query/more_like_this_query.rb +12 -0
  53. data/lib/sunspot/query/pagination.rb +38 -0
  54. data/lib/sunspot/query/query_facet.rb +16 -0
  55. data/lib/sunspot/query/restriction.rb +262 -0
  56. data/lib/sunspot/query/scope.rb +9 -0
  57. data/lib/sunspot/query/sort.rb +95 -0
  58. data/lib/sunspot/query/sort_composite.rb +33 -0
  59. data/lib/sunspot/query/standard_query.rb +20 -0
  60. data/lib/sunspot/query/text_field_boost.rb +17 -0
  61. data/lib/sunspot/schema.rb +151 -0
  62. data/lib/sunspot/search.rb +9 -0
  63. data/lib/sunspot/search/abstract_search.rb +302 -0
  64. data/lib/sunspot/search/date_facet.rb +35 -0
  65. data/lib/sunspot/search/facet_row.rb +27 -0
  66. data/lib/sunspot/search/field_facet.rb +88 -0
  67. data/lib/sunspot/search/highlight.rb +38 -0
  68. data/lib/sunspot/search/hit.rb +136 -0
  69. data/lib/sunspot/search/more_like_this_search.rb +31 -0
  70. data/lib/sunspot/search/query_facet.rb +62 -0
  71. data/lib/sunspot/search/standard_search.rb +21 -0
  72. data/lib/sunspot/server.rb +152 -0
  73. data/lib/sunspot/session.rb +252 -0
  74. data/lib/sunspot/session_proxy.rb +71 -0
  75. data/lib/sunspot/session_proxy/abstract_session_proxy.rb +29 -0
  76. data/lib/sunspot/session_proxy/class_sharding_session_proxy.rb +66 -0
  77. data/lib/sunspot/session_proxy/id_sharding_session_proxy.rb +89 -0
  78. data/lib/sunspot/session_proxy/master_slave_session_proxy.rb +43 -0
  79. data/lib/sunspot/session_proxy/sharding_session_proxy.rb +215 -0
  80. data/lib/sunspot/session_proxy/thread_local_session_proxy.rb +37 -0
  81. data/lib/sunspot/setup.rb +366 -0
  82. data/lib/sunspot/text_field_setup.rb +29 -0
  83. data/lib/sunspot/type.rb +340 -0
  84. data/lib/sunspot/util.rb +253 -0
  85. data/lib/sunspot/version.rb +3 -0
  86. data/solr/etc/jetty.xml +214 -0
  87. data/solr/etc/webdefault.xml +379 -0
  88. data/solr/lib/jetty-6.1.3.jar +0 -0
  89. data/solr/lib/jetty-util-6.1.3.jar +0 -0
  90. data/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
  91. data/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
  92. data/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
  93. data/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
  94. data/solr/lib/servlet-api-2.5-6.1.3.jar +0 -0
  95. data/solr/solr/conf/admin-extra.html +31 -0
  96. data/solr/solr/conf/elevate.xml +36 -0
  97. data/solr/solr/conf/mapping-ISOLatin1Accent.txt +246 -0
  98. data/solr/solr/conf/protwords.txt +21 -0
  99. data/solr/solr/conf/schema.xml +240 -0
  100. data/solr/solr/conf/scripts.conf +24 -0
  101. data/solr/solr/conf/solrconfig.xml +938 -0
  102. data/solr/solr/conf/spellings.txt +2 -0
  103. data/solr/solr/conf/stopwords.es.txt +345 -0
  104. data/solr/solr/conf/stopwords.txt +58 -0
  105. data/solr/solr/conf/synonyms.txt +31 -0
  106. data/solr/solr/lib/lucene-spatial-2.9.1.jar +0 -0
  107. data/solr/solr/lib/solr-spatial-light-0.0.6.jar +0 -0
  108. data/solr/start.jar +0 -0
  109. data/solr/webapps/solr.war +0 -0
  110. data/spec/api/adapters_spec.rb +33 -0
  111. data/spec/api/binding_spec.rb +38 -0
  112. data/spec/api/indexer/attributes_spec.rb +149 -0
  113. data/spec/api/indexer/batch_spec.rb +46 -0
  114. data/spec/api/indexer/dynamic_fields_spec.rb +42 -0
  115. data/spec/api/indexer/fixed_fields_spec.rb +57 -0
  116. data/spec/api/indexer/fulltext_spec.rb +43 -0
  117. data/spec/api/indexer/removal_spec.rb +53 -0
  118. data/spec/api/indexer/spec_helper.rb +1 -0
  119. data/spec/api/indexer_spec.rb +14 -0
  120. data/spec/api/query/advanced_manipulation_examples.rb +35 -0
  121. data/spec/api/query/connectives_examples.rb +176 -0
  122. data/spec/api/query/dsl_spec.rb +18 -0
  123. data/spec/api/query/dynamic_fields_examples.rb +165 -0
  124. data/spec/api/query/faceting_examples.rb +399 -0
  125. data/spec/api/query/fulltext_examples.rb +315 -0
  126. data/spec/api/query/function_spec.rb +70 -0
  127. data/spec/api/query/highlighting_examples.rb +225 -0
  128. data/spec/api/query/local_examples.rb +38 -0
  129. data/spec/api/query/more_like_this_spec.rb +140 -0
  130. data/spec/api/query/ordering_pagination_examples.rb +97 -0
  131. data/spec/api/query/scope_examples.rb +256 -0
  132. data/spec/api/query/spec_helper.rb +1 -0
  133. data/spec/api/query/standard_spec.rb +28 -0
  134. data/spec/api/query/text_field_scoping_examples.rb +30 -0
  135. data/spec/api/query/types_spec.rb +20 -0
  136. data/spec/api/search/dynamic_fields_spec.rb +33 -0
  137. data/spec/api/search/faceting_spec.rb +356 -0
  138. data/spec/api/search/highlighting_spec.rb +69 -0
  139. data/spec/api/search/hits_spec.rb +138 -0
  140. data/spec/api/search/results_spec.rb +79 -0
  141. data/spec/api/search/search_spec.rb +23 -0
  142. data/spec/api/search/spec_helper.rb +1 -0
  143. data/spec/api/server_spec.rb +91 -0
  144. data/spec/api/session_proxy/class_sharding_session_proxy_spec.rb +85 -0
  145. data/spec/api/session_proxy/id_sharding_session_proxy_spec.rb +30 -0
  146. data/spec/api/session_proxy/master_slave_session_proxy_spec.rb +41 -0
  147. data/spec/api/session_proxy/sharding_session_proxy_spec.rb +77 -0
  148. data/spec/api/session_proxy/spec_helper.rb +9 -0
  149. data/spec/api/session_proxy/thread_local_session_proxy_spec.rb +50 -0
  150. data/spec/api/session_spec.rb +198 -0
  151. data/spec/api/spec_helper.rb +3 -0
  152. data/spec/api/sunspot_spec.rb +18 -0
  153. data/spec/ext.rb +11 -0
  154. data/spec/helpers/indexer_helper.rb +29 -0
  155. data/spec/helpers/query_helper.rb +38 -0
  156. data/spec/helpers/search_helper.rb +80 -0
  157. data/spec/integration/dynamic_fields_spec.rb +55 -0
  158. data/spec/integration/faceting_spec.rb +238 -0
  159. data/spec/integration/highlighting_spec.rb +22 -0
  160. data/spec/integration/indexing_spec.rb +33 -0
  161. data/spec/integration/keyword_search_spec.rb +317 -0
  162. data/spec/integration/local_search_spec.rb +91 -0
  163. data/spec/integration/more_like_this_spec.rb +43 -0
  164. data/spec/integration/scoped_search_spec.rb +324 -0
  165. data/spec/integration/spec_helper.rb +7 -0
  166. data/spec/integration/stored_fields_spec.rb +10 -0
  167. data/spec/integration/test_pagination.rb +32 -0
  168. data/spec/mocks/adapters.rb +32 -0
  169. data/spec/mocks/blog.rb +3 -0
  170. data/spec/mocks/comment.rb +21 -0
  171. data/spec/mocks/connection.rb +122 -0
  172. data/spec/mocks/mock_adapter.rb +30 -0
  173. data/spec/mocks/mock_class_sharding_session_proxy.rb +24 -0
  174. data/spec/mocks/mock_record.rb +52 -0
  175. data/spec/mocks/mock_sharding_session_proxy.rb +15 -0
  176. data/spec/mocks/photo.rb +12 -0
  177. data/spec/mocks/post.rb +76 -0
  178. data/spec/mocks/super_class.rb +2 -0
  179. data/spec/mocks/user.rb +8 -0
  180. data/spec/spec_helper.rb +52 -0
  181. data/tasks/gemspec.rake +33 -0
  182. data/tasks/rcov.rake +28 -0
  183. data/tasks/rdoc.rake +27 -0
  184. data/tasks/schema.rake +19 -0
  185. data/tasks/spec.rake +24 -0
  186. data/tasks/todo.rake +4 -0
  187. metadata +355 -0
@@ -0,0 +1,30 @@
1
+ require File.join(File.dirname(__FILE__), 'post')
2
+
3
+ module MockAdapter
4
+ class InstanceAdapter < Sunspot::Adapters::InstanceAdapter
5
+ def id
6
+ @instance.id
7
+ end
8
+ end
9
+
10
+ class DataAccessor < Sunspot::Adapters::DataAccessor
11
+ def load(id)
12
+ @clazz.get(id.to_i)
13
+ end
14
+
15
+ def load_all(ids)
16
+ all = @clazz.get_all(ids.map { |id| id.to_i })
17
+ if @custom_title
18
+ all.each { |item| item.title = @custom_title }
19
+ end
20
+ all
21
+ end
22
+
23
+ def custom_title=(custom_title)
24
+ @custom_title = custom_title
25
+ end
26
+ end
27
+ end
28
+
29
+ Sunspot::Adapters::DataAccessor.register(MockAdapter::DataAccessor, MockRecord)
30
+ Sunspot::Adapters::InstanceAdapter.register(MockAdapter::InstanceAdapter, MockRecord)
@@ -0,0 +1,24 @@
1
+ class MockClassShardingSessionProxy < Sunspot::SessionProxy::ClassShardingSessionProxy
2
+ attr_reader :post_session, :photo_session
3
+
4
+ def initialize(search_session)
5
+ super
6
+ @post_session, @photo_session = Sunspot::Session.new, Sunspot::Session.new
7
+ @post_session.config.solr.url = 'http://posts.solr.local/solr'
8
+ @photo_session.config.solr.url = 'http://photos.solr.local/solr'
9
+ @sessions = {
10
+ Post => @post_session,
11
+ Photo => @photo_session
12
+ }
13
+ end
14
+
15
+ def session_for_class(clazz)
16
+ @sessions[clazz]
17
+ end
18
+
19
+ def all_sessions
20
+ @sessions.values.sort do |lsession, rsession|
21
+ lsession.config.solr.url <=> rsession.config.solr.url
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,52 @@
1
+ class MockRecord
2
+ IDS = Hash.new { |h, k| h[k] = 0 }
3
+ QUERY_COUNTS = Hash.new { |h, k| h[k] = 0 }
4
+ INSTANCES = Hash.new { |h, k| h[k] = {} }
5
+
6
+ attr_reader :id
7
+
8
+ class <<self
9
+ def reset!
10
+ IDS[name.to_sym] = 0
11
+ INSTANCES[name.to_sym] = {}
12
+ end
13
+ end
14
+
15
+ def initialize(attrs = {})
16
+ @id = attrs.delete(:id) || IDS[self.class.name.to_sym] += 1
17
+ INSTANCES[self.class.name.to_sym][@id] = self
18
+ attrs.each_pair do |name, value|
19
+ send(:"#{name}=", value)
20
+ end
21
+ end
22
+
23
+ def self.inherited(base)
24
+ base.extend(ClassMethods)
25
+ end
26
+
27
+ module ClassMethods
28
+ def get(id)
29
+ QUERY_COUNTS[self.name.to_sym] += 1
30
+ get_instance(id)
31
+ end
32
+
33
+ def get_all(ids)
34
+ QUERY_COUNTS[self.name.to_sym] += 1
35
+ ids.map { |id| get_instance(id) }.compact.sort_by { |instance| instance.id }
36
+ end
37
+
38
+ def query_count
39
+ QUERY_COUNTS[self.name.to_sym]
40
+ end
41
+
42
+ private
43
+
44
+ def get_instance(id)
45
+ INSTANCES[self.name.to_sym][id]
46
+ end
47
+ end
48
+
49
+ def destroy
50
+ INSTANCES[self.class.name.to_sym].delete(@id)
51
+ end
52
+ end
@@ -0,0 +1,15 @@
1
+ class MockShardingSessionProxy < Sunspot::SessionProxy::ShardingSessionProxy
2
+ attr_reader :sessions
3
+ alias_method :all_sessions, :sessions
4
+
5
+ def initialize(search_session)
6
+ super
7
+ @sessions = Array.new(2) { Sunspot::Session.new }.each_with_index do |session, i|
8
+ session.config.solr.url = "http://localhost:898#{i}/solr"
9
+ end
10
+ end
11
+
12
+ def session_for(object)
13
+ @sessions[object.blog_id.to_i % 2]
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ class Photo < MockRecord
2
+ attr_accessor :caption, :lat, :lng, :size, :average_rating, :created_at
3
+ end
4
+
5
+ Sunspot.setup(Photo) do
6
+ text :caption, :default_boost => 1.5
7
+ boost 0.75
8
+ coordinates { [lat, lng] }
9
+ integer :size, :trie => true
10
+ float :average_rating, :trie => true
11
+ time :created_at, :trie => true
12
+ end
@@ -0,0 +1,76 @@
1
+ require File.join(File.dirname(__FILE__), 'blog')
2
+ require File.join(File.dirname(__FILE__), 'super_class')
3
+
4
+ class Post < SuperClass
5
+ attr_accessor :title, :body, :blog_id, :published_at, :ratings_average,
6
+ :author_name, :featured, :expire_date, :coordinates, :tags
7
+ alias_method :featured?, :featured
8
+
9
+ def category_ids
10
+ @category_ids ||= []
11
+ end
12
+
13
+ def custom_string
14
+ @custom_string ||= {}
15
+ end
16
+
17
+ def custom_fl
18
+ @custom_fl ||= {}
19
+ end
20
+
21
+ def custom_time
22
+ @custom_time ||= {}
23
+ end
24
+
25
+ def custom_boolean
26
+ @custom_boolean ||= {}
27
+ end
28
+
29
+ private
30
+ attr_writer :category_ids, :custom_string, :custom_fl, :custom_time, :custom_boolean
31
+ end
32
+
33
+ Sunspot.setup(Post) do
34
+ text :title, :boost => 2
35
+ text :body, :stored => true, :more_like_this => true
36
+ text :backwards_title do
37
+ title.reverse if title
38
+ end
39
+ text :tags, :more_like_this => true
40
+ string :title, :stored => true
41
+ integer :blog_id, :references => Blog
42
+ integer :category_ids, :multiple => true
43
+ float :average_rating, :using => :ratings_average, :trie => true
44
+ time :published_at, :trie => true
45
+ date :expire_date
46
+ boolean :featured, :using => :featured?
47
+ string :sort_title do
48
+ title.downcase.sub(/^(a|an|the)\W+/, '') if title
49
+ end
50
+ integer :primary_category_id do |post|
51
+ post.category_ids.first
52
+ end
53
+ time :last_indexed_at, :stored => true do
54
+ Time.now
55
+ end
56
+ coordinates :coordinates
57
+
58
+ dynamic_string :custom_string, :stored => true
59
+ dynamic_float :custom_float, :multiple => true, :using => :custom_fl
60
+ dynamic_integer :custom_integer do
61
+ category_ids.inject({}) do |hash, category_id|
62
+ hash.merge(category_id => 1)
63
+ end
64
+ end
65
+ dynamic_time :custom_time
66
+ dynamic_boolean :custom_boolean
67
+
68
+ boost do
69
+ if ratings_average
70
+ 1 + (ratings_average - 3.0) / 4.0
71
+ end
72
+ end
73
+ end
74
+
75
+ class PhotoPost < Post
76
+ end
@@ -0,0 +1,2 @@
1
+ class SuperClass < MockRecord
2
+ end
@@ -0,0 +1,8 @@
1
+ class User
2
+ attr_accessor :name
3
+ end
4
+
5
+ Sunspot.setup(User) do
6
+ text :name
7
+ string :name
8
+ end
@@ -0,0 +1,52 @@
1
+ if rsolr_gem_version = ENV['RSOLR_GEM_VERSION']
2
+ STDERR.puts("Forcing rsolr gem version #{rsolr_gem_version}")
3
+ using_gems = true
4
+ require 'rubygems'
5
+ gem 'rsolr', rsolr_gem_version
6
+ end
7
+
8
+ require 'ostruct'
9
+ begin
10
+ require 'spec'
11
+ if ENV['USE_WILL_PAGINATE']
12
+ require 'will_paginate'
13
+ require 'will_paginate/collection'
14
+ end
15
+ rescue LoadError => e
16
+ if require 'rubygems'
17
+ retry
18
+ else
19
+ raise(e)
20
+ end
21
+ end
22
+
23
+ unless gem_name = ENV['SUNSPOT_TEST_GEM']
24
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
25
+ else
26
+ gem gem_name
27
+ end
28
+ require 'sunspot'
29
+
30
+ require File.join(File.dirname(__FILE__), 'mocks', 'mock_record.rb')
31
+ Dir.glob(File.join(File.dirname(__FILE__), 'mocks', '**', '*.rb')).each do |file|
32
+ require file unless File.basename(file) == 'mock_record.rb'
33
+ end
34
+ require File.join(File.dirname(__FILE__), 'ext')
35
+
36
+ Spec::Runner.configure do |config|
37
+ Dir.glob(File.join(File.dirname(__FILE__), 'helpers', '*_helper.rb')).each do |helper|
38
+ helper_name = File.basename(helper, File.extname(helper))
39
+ spec_type = helper_name.sub(/_helper$/, '').to_sym
40
+ require(helper)
41
+ config.include(
42
+ Sunspot::Util.full_const_get(Sunspot::Util.camel_case(helper_name)),
43
+ :type => spec_type
44
+ )
45
+ end
46
+ end
47
+
48
+ def without_class(clazz)
49
+ Object.class_eval { remove_const(clazz.name.to_sym) }
50
+ yield
51
+ Object.class_eval { const_set(clazz.name.to_sym, clazz) }
52
+ end
@@ -0,0 +1,33 @@
1
+ require File.join(File.dirname(__FILE__), '..', '..', 'tools', 'gem_tasks')
2
+
3
+ Sunspot::GemTasks.new(:build => :copy_rdoc) do |s|
4
+ s.name = 'nuatt_sunspot'
5
+ s.version = Sunspot::VERSION
6
+ s.executables = ['sunspot-solr', 'sunspot-installer']
7
+ s.email = 'sistemas@nuatt.es'
8
+ s.homepage = 'http://outoftime.github.com/sunspot'
9
+ s.summary = 'Library for expressive, powerful interaction with the Solr search engine'
10
+ s.description = <<TEXT
11
+ Sunspot is a library providing a powerful, all-ruby API for the Solr search engine. Sunspot manages the configuration of persistent Ruby classes for search and indexing and exposes Solr's most powerful features through a collection of DSLs. Complex search operations can be performed without hand-writing any boolean queries or building Solr parameters by hand.
12
+ TEXT
13
+ s.authors = ['Mat Brown', 'Peer Allan', 'Dmitriy Dzema', 'Benjamin Krause', 'Marcel de Graaf', 'Brandon Keepers', 'Peter Berkenbosch', 'Brian Atkinson', 'Tom Coleman', 'Matt Mitchell', 'Nathan Beyer', 'Kieran Topping', 'Nicolas Braem', 'Jeremy Ashkenas']
14
+ s.rubyforge_project = 'sunspot'
15
+ s.files = FileList['[A-Z]*', '{bin,installer,lib,spec,tasks,templates}/**/*', 'solr/{etc,lib,webapps}/**/*', 'solr/solr/{conf,lib}/*', 'solr/start.jar']
16
+ s.add_runtime_dependency 'rsolr', '0.12.1'
17
+ s.add_runtime_dependency 'escape', '0.0.4'
18
+ s.add_development_dependency 'rspec', '~> 1.1'
19
+ s.extra_rdoc_files = ['README.rdoc']
20
+ s.test_files = FileList['spec/**/*_spec.rb']
21
+ s.rdoc_options << '--webcvs=http://github.com/outoftime/sunspot/tree/master/%s' <<
22
+ '--title' << 'Sunspot - Solr-powered search for Ruby objects - API Documentation' <<
23
+ '--main' << 'README.rdoc'
24
+
25
+ end
26
+
27
+ task :copy_rdoc do
28
+ sunspot_root = File.join(File.dirname(__FILE__), '..')
29
+ FileUtils.cp(
30
+ File.join(sunspot_root, '..', 'README.rdoc'),
31
+ sunspot_root
32
+ )
33
+ end
data/tasks/rcov.rake ADDED
@@ -0,0 +1,28 @@
1
+ require 'rake'
2
+ require 'spec/rake/spectask'
3
+
4
+ desc 'run specs with rcov'
5
+ Spec::Rake::SpecTask.new('rcov') do |t|
6
+ t.spec_files = FileList['spec/**/*_spec.rb']
7
+ t.rcov = true
8
+ t.rcov_dir = File.join('coverage', 'all')
9
+ t.rcov_opts.concat(['--exclude', 'spec', '--sort', 'coverage', '--only-uncovered'])
10
+ end
11
+
12
+ namespace :rcov do
13
+ desc 'run api specs with rcov'
14
+ Spec::Rake::SpecTask.new('api') do |t|
15
+ t.spec_files = FileList['spec/api/**/*_spec.rb']
16
+ t.rcov = true
17
+ t.rcov_dir = File.join('coverage', 'api')
18
+ t.rcov_opts.concat(['--exclude', 'spec', '--sort', 'coverage', '--only-uncovered'])
19
+ end
20
+
21
+ desc 'run integration specs with rcov'
22
+ Spec::Rake::SpecTask.new('integration') do |t|
23
+ t.spec_files = FileList['spec/integration/**/*_spec.rb']
24
+ t.rcov = true
25
+ t.rcov_dir = File.join('coverage', 'integration')
26
+ t.rcov_opts.concat(['--exclude', 'spec', '--sort', 'coverage', '--only-uncovered'])
27
+ end
28
+ end
data/tasks/rdoc.rake ADDED
@@ -0,0 +1,27 @@
1
+ begin
2
+ require 'hanna/rdoctask'
3
+ rescue LoadError
4
+ if require 'rubygems'
5
+ retry
6
+ end
7
+ # It's OK if hanna isn't installed.
8
+ end
9
+
10
+ Rake::RDocTask.new(:doc) do |rdoc|
11
+ version = Sunspot::VERSION
12
+ rdoc.title = "Sunspot #{version} - Solr-powered search for Ruby objects - API Documentation"
13
+ rdoc.main = 'README.rdoc'
14
+ rdoc.rdoc_files.include('README.rdoc', 'lib/sunspot.rb', 'lib/sunspot/**/*.rb')
15
+ rdoc.rdoc_dir = 'doc'
16
+ rdoc.options << "--webcvs=http://github.com/outoftime/sunspot/tree/v#{version}/%s" << '--title' << 'Sunspot - Solr-powered search for Ruby objects - API Documentation'
17
+ end
18
+
19
+ namespace :doc do
20
+ desc 'Generate rdoc and move into pages directory'
21
+ task :publish => :redoc do
22
+ doc_dir = File.join(File.dirname(__FILE__), '..', 'doc')
23
+ publish_dir = File.join(File.dirname(__FILE__), '..', '..', 'pages', 'docs')
24
+ FileUtils.rm_rf(publish_dir) if File.exist?(publish_dir)
25
+ FileUtils.cp_r(doc_dir, publish_dir)
26
+ end
27
+ end
data/tasks/schema.rake ADDED
@@ -0,0 +1,19 @@
1
+ namespace :schema do
2
+ desc 'Generate schema from template'
3
+ task :compile do
4
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'sunspot', 'schema')
5
+ File.open(
6
+ File.join(
7
+ File.dirname(__FILE__),
8
+ '..',
9
+ 'solr',
10
+ 'solr',
11
+ 'conf',
12
+ 'schema.xml'
13
+ ),
14
+ 'w'
15
+ ) do |file|
16
+ file << Sunspot::Schema.new.to_xml
17
+ end
18
+ end
19
+ end
data/tasks/spec.rake ADDED
@@ -0,0 +1,24 @@
1
+ gem 'rspec', '~>1.1'
2
+
3
+ require 'spec'
4
+ require 'spec/rake/spectask'
5
+
6
+ desc 'run specs'
7
+ Spec::Rake::SpecTask.new('spec') do |t|
8
+ t.spec_files = FileList[File.join(File.dirname(__FILE__), '..', 'spec', '**', '*_spec.rb')]
9
+ t.spec_opts = ['--color']
10
+ end
11
+
12
+ namespace :spec do
13
+ desc 'run api specs (mock out Solr dependency)'
14
+ Spec::Rake::SpecTask.new('api') do |t|
15
+ t.spec_files = FileList[File.join(File.dirname(__FILE__), '..', 'spec', 'api', '**', '*_spec.rb')]
16
+ t.spec_opts = ['--color']
17
+ end
18
+
19
+ desc 'run integration specs (be sure to run `bin/sunspot-solr start`)'
20
+ Spec::Rake::SpecTask.new('integration') do |t|
21
+ t.spec_files = FileList[File.join(File.dirname(__FILE__), '..', 'spec', 'integration', '*_spec.rb')]
22
+ t.spec_opts = ['--color']
23
+ end
24
+ end
data/tasks/todo.rake ADDED
@@ -0,0 +1,4 @@
1
+ desc 'Show all TODO and related tags'
2
+ task :todo do
3
+ FileList['lib/**/*.rb'].egrep(/#.*(TODO|FIXME|XXX)/)
4
+ end
metadata ADDED
@@ -0,0 +1,355 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nuatt_sunspot
3
+ version: !ruby/object:Gem::Version
4
+ hash: 81
5
+ prerelease: false
6
+ segments:
7
+ - 1
8
+ - 1
9
+ - 0
10
+ - 3
11
+ version: 1.1.0.3
12
+ platform: ruby
13
+ authors:
14
+ - Mat Brown
15
+ - Peer Allan
16
+ - Dmitriy Dzema
17
+ - Benjamin Krause
18
+ - Marcel de Graaf
19
+ - Brandon Keepers
20
+ - Peter Berkenbosch
21
+ - Brian Atkinson
22
+ - Tom Coleman
23
+ - Matt Mitchell
24
+ - Nathan Beyer
25
+ - Kieran Topping
26
+ - Nicolas Braem
27
+ - Jeremy Ashkenas
28
+ autorequire:
29
+ bindir: bin
30
+ cert_chain: []
31
+
32
+ date: 2010-09-21 00:00:00 +02:00
33
+ default_executable:
34
+ dependencies:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rsolr
37
+ prerelease: false
38
+ requirement: &id001 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - "="
42
+ - !ruby/object:Gem::Version
43
+ hash: 45
44
+ segments:
45
+ - 0
46
+ - 12
47
+ - 1
48
+ version: 0.12.1
49
+ type: :runtime
50
+ version_requirements: *id001
51
+ - !ruby/object:Gem::Dependency
52
+ name: escape
53
+ prerelease: false
54
+ requirement: &id002 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - "="
58
+ - !ruby/object:Gem::Version
59
+ hash: 23
60
+ segments:
61
+ - 0
62
+ - 0
63
+ - 4
64
+ version: 0.0.4
65
+ type: :runtime
66
+ version_requirements: *id002
67
+ - !ruby/object:Gem::Dependency
68
+ name: rspec
69
+ prerelease: false
70
+ requirement: &id003 !ruby/object:Gem::Requirement
71
+ none: false
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ hash: 13
76
+ segments:
77
+ - 1
78
+ - 1
79
+ version: "1.1"
80
+ type: :development
81
+ version_requirements: *id003
82
+ description: |
83
+ Sunspot is a library providing a powerful, all-ruby API for the Solr search engine. Sunspot manages the configuration of persistent Ruby classes for search and indexing and exposes Solr's most powerful features through a collection of DSLs. Complex search operations can be performed without hand-writing any boolean queries or building Solr parameters by hand.
84
+
85
+ email: sistemas@nuatt.es
86
+ executables:
87
+ - sunspot-solr
88
+ - sunspot-installer
89
+ extensions: []
90
+
91
+ extra_rdoc_files:
92
+ - README.rdoc
93
+ files:
94
+ - History.txt
95
+ - LICENSE
96
+ - Rakefile
97
+ - README.rdoc
98
+ - TODO
99
+ - VERSION.yml
100
+ - bin/sunspot-installer
101
+ - bin/sunspot-solr
102
+ - installer/config/schema.yml
103
+ - lib/light_config.rb
104
+ - lib/sunspot/adapters.rb
105
+ - lib/sunspot/composite_setup.rb
106
+ - lib/sunspot/configuration.rb
107
+ - lib/sunspot/data_extractor.rb
108
+ - lib/sunspot/dsl/adjustable.rb
109
+ - lib/sunspot/dsl/field_query.rb
110
+ - lib/sunspot/dsl/fields.rb
111
+ - lib/sunspot/dsl/fulltext.rb
112
+ - lib/sunspot/dsl/function.rb
113
+ - lib/sunspot/dsl/functional.rb
114
+ - lib/sunspot/dsl/more_like_this_query.rb
115
+ - lib/sunspot/dsl/paginatable.rb
116
+ - lib/sunspot/dsl/query_facet.rb
117
+ - lib/sunspot/dsl/restriction.rb
118
+ - lib/sunspot/dsl/scope.rb
119
+ - lib/sunspot/dsl/search.rb
120
+ - lib/sunspot/dsl/standard_query.rb
121
+ - lib/sunspot/dsl.rb
122
+ - lib/sunspot/field.rb
123
+ - lib/sunspot/field_factory.rb
124
+ - lib/sunspot/indexer.rb
125
+ - lib/sunspot/installer/library_installer.rb
126
+ - lib/sunspot/installer/schema_builder.rb
127
+ - lib/sunspot/installer/solrconfig_updater.rb
128
+ - lib/sunspot/installer/task_helper.rb
129
+ - lib/sunspot/installer.rb
130
+ - lib/sunspot/query/abstract_field_facet.rb
131
+ - lib/sunspot/query/boost_query.rb
132
+ - lib/sunspot/query/common_query.rb
133
+ - lib/sunspot/query/composite_fulltext.rb
134
+ - lib/sunspot/query/connective.rb
135
+ - lib/sunspot/query/date_field_facet.rb
136
+ - lib/sunspot/query/dismax.rb
137
+ - lib/sunspot/query/field_facet.rb
138
+ - lib/sunspot/query/filter.rb
139
+ - lib/sunspot/query/function_query.rb
140
+ - lib/sunspot/query/highlighting.rb
141
+ - lib/sunspot/query/local.rb
142
+ - lib/sunspot/query/more_like_this.rb
143
+ - lib/sunspot/query/more_like_this_query.rb
144
+ - lib/sunspot/query/pagination.rb
145
+ - lib/sunspot/query/query_facet.rb
146
+ - lib/sunspot/query/restriction.rb
147
+ - lib/sunspot/query/scope.rb
148
+ - lib/sunspot/query/sort.rb
149
+ - lib/sunspot/query/sort_composite.rb
150
+ - lib/sunspot/query/standard_query.rb
151
+ - lib/sunspot/query/text_field_boost.rb
152
+ - lib/sunspot/query.rb
153
+ - lib/sunspot/schema.rb
154
+ - lib/sunspot/search/abstract_search.rb
155
+ - lib/sunspot/search/date_facet.rb
156
+ - lib/sunspot/search/facet_row.rb
157
+ - lib/sunspot/search/field_facet.rb
158
+ - lib/sunspot/search/highlight.rb
159
+ - lib/sunspot/search/hit.rb
160
+ - lib/sunspot/search/more_like_this_search.rb
161
+ - lib/sunspot/search/query_facet.rb
162
+ - lib/sunspot/search/standard_search.rb
163
+ - lib/sunspot/search.rb
164
+ - lib/sunspot/server.rb
165
+ - lib/sunspot/session.rb
166
+ - lib/sunspot/session_proxy/abstract_session_proxy.rb
167
+ - lib/sunspot/session_proxy/class_sharding_session_proxy.rb
168
+ - lib/sunspot/session_proxy/id_sharding_session_proxy.rb
169
+ - lib/sunspot/session_proxy/master_slave_session_proxy.rb
170
+ - lib/sunspot/session_proxy/sharding_session_proxy.rb
171
+ - lib/sunspot/session_proxy/thread_local_session_proxy.rb
172
+ - lib/sunspot/session_proxy.rb
173
+ - lib/sunspot/setup.rb
174
+ - lib/sunspot/text_field_setup.rb
175
+ - lib/sunspot/type.rb
176
+ - lib/sunspot/util.rb
177
+ - lib/sunspot/version.rb
178
+ - lib/sunspot.rb
179
+ - spec/api/adapters_spec.rb
180
+ - spec/api/binding_spec.rb
181
+ - spec/api/indexer/attributes_spec.rb
182
+ - spec/api/indexer/batch_spec.rb
183
+ - spec/api/indexer/dynamic_fields_spec.rb
184
+ - spec/api/indexer/fixed_fields_spec.rb
185
+ - spec/api/indexer/fulltext_spec.rb
186
+ - spec/api/indexer/removal_spec.rb
187
+ - spec/api/indexer/spec_helper.rb
188
+ - spec/api/indexer_spec.rb
189
+ - spec/api/query/advanced_manipulation_examples.rb
190
+ - spec/api/query/connectives_examples.rb
191
+ - spec/api/query/dsl_spec.rb
192
+ - spec/api/query/dynamic_fields_examples.rb
193
+ - spec/api/query/faceting_examples.rb
194
+ - spec/api/query/fulltext_examples.rb
195
+ - spec/api/query/function_spec.rb
196
+ - spec/api/query/highlighting_examples.rb
197
+ - spec/api/query/local_examples.rb
198
+ - spec/api/query/more_like_this_spec.rb
199
+ - spec/api/query/ordering_pagination_examples.rb
200
+ - spec/api/query/scope_examples.rb
201
+ - spec/api/query/spec_helper.rb
202
+ - spec/api/query/standard_spec.rb
203
+ - spec/api/query/text_field_scoping_examples.rb
204
+ - spec/api/query/types_spec.rb
205
+ - spec/api/search/dynamic_fields_spec.rb
206
+ - spec/api/search/faceting_spec.rb
207
+ - spec/api/search/highlighting_spec.rb
208
+ - spec/api/search/hits_spec.rb
209
+ - spec/api/search/results_spec.rb
210
+ - spec/api/search/search_spec.rb
211
+ - spec/api/search/spec_helper.rb
212
+ - spec/api/server_spec.rb
213
+ - spec/api/session_proxy/class_sharding_session_proxy_spec.rb
214
+ - spec/api/session_proxy/id_sharding_session_proxy_spec.rb
215
+ - spec/api/session_proxy/master_slave_session_proxy_spec.rb
216
+ - spec/api/session_proxy/sharding_session_proxy_spec.rb
217
+ - spec/api/session_proxy/spec_helper.rb
218
+ - spec/api/session_proxy/thread_local_session_proxy_spec.rb
219
+ - spec/api/session_spec.rb
220
+ - spec/api/spec_helper.rb
221
+ - spec/api/sunspot_spec.rb
222
+ - spec/ext.rb
223
+ - spec/helpers/indexer_helper.rb
224
+ - spec/helpers/query_helper.rb
225
+ - spec/helpers/search_helper.rb
226
+ - spec/integration/dynamic_fields_spec.rb
227
+ - spec/integration/faceting_spec.rb
228
+ - spec/integration/highlighting_spec.rb
229
+ - spec/integration/indexing_spec.rb
230
+ - spec/integration/keyword_search_spec.rb
231
+ - spec/integration/local_search_spec.rb
232
+ - spec/integration/more_like_this_spec.rb
233
+ - spec/integration/scoped_search_spec.rb
234
+ - spec/integration/spec_helper.rb
235
+ - spec/integration/stored_fields_spec.rb
236
+ - spec/integration/test_pagination.rb
237
+ - spec/mocks/adapters.rb
238
+ - spec/mocks/blog.rb
239
+ - spec/mocks/comment.rb
240
+ - spec/mocks/connection.rb
241
+ - spec/mocks/mock_adapter.rb
242
+ - spec/mocks/mock_class_sharding_session_proxy.rb
243
+ - spec/mocks/mock_record.rb
244
+ - spec/mocks/mock_sharding_session_proxy.rb
245
+ - spec/mocks/photo.rb
246
+ - spec/mocks/post.rb
247
+ - spec/mocks/super_class.rb
248
+ - spec/mocks/user.rb
249
+ - spec/spec_helper.rb
250
+ - tasks/gemspec.rake
251
+ - tasks/rcov.rake
252
+ - tasks/rdoc.rake
253
+ - tasks/schema.rake
254
+ - tasks/spec.rake
255
+ - tasks/todo.rake
256
+ - solr/etc/jetty.xml
257
+ - solr/etc/webdefault.xml
258
+ - solr/lib/jetty-6.1.3.jar
259
+ - solr/lib/jetty-util-6.1.3.jar
260
+ - solr/lib/jsp-2.1/ant-1.6.5.jar
261
+ - solr/lib/jsp-2.1/core-3.1.1.jar
262
+ - solr/lib/jsp-2.1/jsp-2.1.jar
263
+ - solr/lib/jsp-2.1/jsp-api-2.1.jar
264
+ - solr/lib/servlet-api-2.5-6.1.3.jar
265
+ - solr/webapps/solr.war
266
+ - solr/solr/conf/admin-extra.html
267
+ - solr/solr/conf/elevate.xml
268
+ - solr/solr/conf/mapping-ISOLatin1Accent.txt
269
+ - solr/solr/conf/protwords.txt
270
+ - solr/solr/conf/schema.xml
271
+ - solr/solr/conf/scripts.conf
272
+ - solr/solr/conf/solrconfig.xml
273
+ - solr/solr/conf/spellings.txt
274
+ - solr/solr/conf/stopwords.es.txt
275
+ - solr/solr/conf/stopwords.txt
276
+ - solr/solr/conf/synonyms.txt
277
+ - solr/solr/lib/lucene-spatial-2.9.1.jar
278
+ - solr/solr/lib/solr-spatial-light-0.0.6.jar
279
+ - solr/start.jar
280
+ has_rdoc: true
281
+ homepage: http://outoftime.github.com/sunspot
282
+ licenses: []
283
+
284
+ post_install_message:
285
+ rdoc_options:
286
+ - --webcvs=http://github.com/outoftime/sunspot/tree/master/%s
287
+ - --title
288
+ - Sunspot - Solr-powered search for Ruby objects - API Documentation
289
+ - --main
290
+ - README.rdoc
291
+ require_paths:
292
+ - lib
293
+ required_ruby_version: !ruby/object:Gem::Requirement
294
+ none: false
295
+ requirements:
296
+ - - ">="
297
+ - !ruby/object:Gem::Version
298
+ hash: 3
299
+ segments:
300
+ - 0
301
+ version: "0"
302
+ required_rubygems_version: !ruby/object:Gem::Requirement
303
+ none: false
304
+ requirements:
305
+ - - ">="
306
+ - !ruby/object:Gem::Version
307
+ hash: 3
308
+ segments:
309
+ - 0
310
+ version: "0"
311
+ requirements: []
312
+
313
+ rubyforge_project: sunspot
314
+ rubygems_version: 1.3.7
315
+ signing_key:
316
+ specification_version: 3
317
+ summary: Library for expressive, powerful interaction with the Solr search engine
318
+ test_files:
319
+ - spec/api/adapters_spec.rb
320
+ - spec/api/binding_spec.rb
321
+ - spec/api/indexer/attributes_spec.rb
322
+ - spec/api/indexer/batch_spec.rb
323
+ - spec/api/indexer/dynamic_fields_spec.rb
324
+ - spec/api/indexer/fixed_fields_spec.rb
325
+ - spec/api/indexer/fulltext_spec.rb
326
+ - spec/api/indexer/removal_spec.rb
327
+ - spec/api/indexer_spec.rb
328
+ - spec/api/query/dsl_spec.rb
329
+ - spec/api/query/function_spec.rb
330
+ - spec/api/query/more_like_this_spec.rb
331
+ - spec/api/query/standard_spec.rb
332
+ - spec/api/query/types_spec.rb
333
+ - spec/api/search/dynamic_fields_spec.rb
334
+ - spec/api/search/faceting_spec.rb
335
+ - spec/api/search/highlighting_spec.rb
336
+ - spec/api/search/hits_spec.rb
337
+ - spec/api/search/results_spec.rb
338
+ - spec/api/search/search_spec.rb
339
+ - spec/api/server_spec.rb
340
+ - spec/api/session_proxy/class_sharding_session_proxy_spec.rb
341
+ - spec/api/session_proxy/id_sharding_session_proxy_spec.rb
342
+ - spec/api/session_proxy/master_slave_session_proxy_spec.rb
343
+ - spec/api/session_proxy/sharding_session_proxy_spec.rb
344
+ - spec/api/session_proxy/thread_local_session_proxy_spec.rb
345
+ - spec/api/session_spec.rb
346
+ - spec/api/sunspot_spec.rb
347
+ - spec/integration/dynamic_fields_spec.rb
348
+ - spec/integration/faceting_spec.rb
349
+ - spec/integration/highlighting_spec.rb
350
+ - spec/integration/indexing_spec.rb
351
+ - spec/integration/keyword_search_spec.rb
352
+ - spec/integration/local_search_spec.rb
353
+ - spec/integration/more_like_this_spec.rb
354
+ - spec/integration/scoped_search_spec.rb
355
+ - spec/integration/stored_fields_spec.rb