websolr-rails 1.4.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. data/.gitignore +1 -10
  2. data/LICENSE +17 -16
  3. data/README.rdoc +16 -62
  4. data/Rakefile +2 -60
  5. data/VERSION +1 -1
  6. data/lib/websolr-rails.rb +54 -1
  7. data/lib/websolr.rb +2 -1
  8. metadata +12 -215
  9. data/CHANGELOG +0 -8
  10. data/TESTING_THE_PLUGIN +0 -25
  11. data/bin/websolr +0 -10
  12. data/config/solr.yml +0 -15
  13. data/config/solr_environment.rb +0 -22
  14. data/generate_rdoc.sh +0 -13
  15. data/lib/acts_as_solr.rb +0 -65
  16. data/lib/acts_methods.rb +0 -281
  17. data/lib/class_methods.rb +0 -243
  18. data/lib/common_methods.rb +0 -89
  19. data/lib/deprecation.rb +0 -61
  20. data/lib/instance_methods.rb +0 -181
  21. data/lib/lazy_document.rb +0 -18
  22. data/lib/parser_methods.rb +0 -230
  23. data/lib/search_results.rb +0 -72
  24. data/lib/solr.rb +0 -21
  25. data/lib/solr/connection.rb +0 -190
  26. data/lib/solr/document.rb +0 -78
  27. data/lib/solr/exception.rb +0 -13
  28. data/lib/solr/field.rb +0 -39
  29. data/lib/solr/importer.rb +0 -19
  30. data/lib/solr/importer/array_mapper.rb +0 -26
  31. data/lib/solr/importer/delimited_file_source.rb +0 -38
  32. data/lib/solr/importer/hpricot_mapper.rb +0 -27
  33. data/lib/solr/importer/mapper.rb +0 -51
  34. data/lib/solr/importer/solr_source.rb +0 -43
  35. data/lib/solr/importer/xpath_mapper.rb +0 -35
  36. data/lib/solr/indexer.rb +0 -52
  37. data/lib/solr/request.rb +0 -26
  38. data/lib/solr/request/add_document.rb +0 -63
  39. data/lib/solr/request/base.rb +0 -36
  40. data/lib/solr/request/commit.rb +0 -31
  41. data/lib/solr/request/delete.rb +0 -50
  42. data/lib/solr/request/dismax.rb +0 -46
  43. data/lib/solr/request/index_info.rb +0 -22
  44. data/lib/solr/request/modify_document.rb +0 -51
  45. data/lib/solr/request/optimize.rb +0 -21
  46. data/lib/solr/request/ping.rb +0 -36
  47. data/lib/solr/request/select.rb +0 -56
  48. data/lib/solr/request/spellcheck.rb +0 -30
  49. data/lib/solr/request/standard.rb +0 -402
  50. data/lib/solr/request/update.rb +0 -23
  51. data/lib/solr/response.rb +0 -27
  52. data/lib/solr/response/add_document.rb +0 -17
  53. data/lib/solr/response/base.rb +0 -42
  54. data/lib/solr/response/commit.rb +0 -17
  55. data/lib/solr/response/delete.rb +0 -13
  56. data/lib/solr/response/dismax.rb +0 -8
  57. data/lib/solr/response/index_info.rb +0 -26
  58. data/lib/solr/response/modify_document.rb +0 -17
  59. data/lib/solr/response/optimize.rb +0 -14
  60. data/lib/solr/response/ping.rb +0 -28
  61. data/lib/solr/response/ruby.rb +0 -42
  62. data/lib/solr/response/select.rb +0 -17
  63. data/lib/solr/response/spellcheck.rb +0 -20
  64. data/lib/solr/response/standard.rb +0 -64
  65. data/lib/solr/response/xml.rb +0 -42
  66. data/lib/solr/solrtasks.rb +0 -27
  67. data/lib/solr/util.rb +0 -32
  68. data/lib/solr/xml.rb +0 -44
  69. data/lib/solr_fixtures.rb +0 -13
  70. data/lib/tasks/database.rake +0 -18
  71. data/lib/tasks/solr.rake +0 -94
  72. data/lib/tasks/test.rake +0 -7
  73. data/lib/websolr_controller.rb +0 -233
  74. data/lib/websolr_option_parser.rb +0 -61
  75. data/lib/websolr_rails.rb +0 -1
  76. data/lib/websolr_rails/tasks.rb +0 -4
  77. data/lib/will_paginate_support.rb +0 -12
  78. data/solr/CHANGES.txt +0 -1207
  79. data/solr/LICENSE.txt +0 -712
  80. data/solr/NOTICE.txt +0 -90
  81. data/solr/etc/jetty.xml +0 -205
  82. data/solr/etc/webdefault.xml +0 -379
  83. data/solr/lib/easymock.jar +0 -0
  84. data/solr/lib/jetty-6.1.3.jar +0 -0
  85. data/solr/lib/jetty-util-6.1.3.jar +0 -0
  86. data/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
  87. data/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
  88. data/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
  89. data/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
  90. data/solr/lib/servlet-api-2.4.jar +0 -0
  91. data/solr/lib/servlet-api-2.5-6.1.3.jar +0 -0
  92. data/solr/lib/xpp3-1.1.3.4.O.jar +0 -0
  93. data/solr/logs/.empty-dir-for-git +0 -0
  94. data/solr/solr/README.txt +0 -52
  95. data/solr/solr/bin/abc +0 -176
  96. data/solr/solr/bin/abo +0 -176
  97. data/solr/solr/bin/backup +0 -108
  98. data/solr/solr/bin/backupcleaner +0 -142
  99. data/solr/solr/bin/commit +0 -128
  100. data/solr/solr/bin/optimize +0 -129
  101. data/solr/solr/bin/readercycle +0 -129
  102. data/solr/solr/bin/rsyncd-disable +0 -77
  103. data/solr/solr/bin/rsyncd-enable +0 -76
  104. data/solr/solr/bin/rsyncd-start +0 -145
  105. data/solr/solr/bin/rsyncd-stop +0 -105
  106. data/solr/solr/bin/scripts-util +0 -83
  107. data/solr/solr/bin/snapcleaner +0 -148
  108. data/solr/solr/bin/snapinstaller +0 -168
  109. data/solr/solr/bin/snappuller +0 -248
  110. data/solr/solr/bin/snappuller-disable +0 -77
  111. data/solr/solr/bin/snappuller-enable +0 -77
  112. data/solr/solr/bin/snapshooter +0 -109
  113. data/solr/solr/conf/admin-extra.html +0 -31
  114. data/solr/solr/conf/protwords.txt +0 -21
  115. data/solr/solr/conf/schema.xml +0 -126
  116. data/solr/solr/conf/scripts.conf +0 -24
  117. data/solr/solr/conf/solrconfig.xml +0 -458
  118. data/solr/solr/conf/stopwords.txt +0 -57
  119. data/solr/solr/conf/synonyms.txt +0 -31
  120. data/solr/solr/conf/xslt/example.xsl +0 -132
  121. data/solr/solr/conf/xslt/example_atom.xsl +0 -63
  122. data/solr/solr/conf/xslt/example_rss.xsl +0 -62
  123. data/solr/start.jar +0 -0
  124. data/solr/tmp/.empty-dir-for-git +0 -0
  125. data/solr/webapps/solr.war +0 -0
  126. data/test/config/solr.yml +0 -2
  127. data/test/db/connections/mysql/connection.rb +0 -10
  128. data/test/db/connections/sqlite/connection.rb +0 -8
  129. data/test/db/migrate/001_create_books.rb +0 -15
  130. data/test/db/migrate/002_create_movies.rb +0 -12
  131. data/test/db/migrate/003_create_categories.rb +0 -11
  132. data/test/db/migrate/004_create_electronics.rb +0 -16
  133. data/test/db/migrate/005_create_authors.rb +0 -12
  134. data/test/db/migrate/006_create_postings.rb +0 -9
  135. data/test/db/migrate/007_create_posts.rb +0 -13
  136. data/test/db/migrate/008_create_gadgets.rb +0 -11
  137. data/test/fixtures/authors.yml +0 -9
  138. data/test/fixtures/books.yml +0 -13
  139. data/test/fixtures/categories.yml +0 -7
  140. data/test/fixtures/db_definitions/mysql.sql +0 -41
  141. data/test/fixtures/electronics.yml +0 -49
  142. data/test/fixtures/movies.yml +0 -9
  143. data/test/fixtures/postings.yml +0 -10
  144. data/test/functional/acts_as_solr_test.rb +0 -413
  145. data/test/functional/association_indexing_test.rb +0 -37
  146. data/test/functional/faceted_search_test.rb +0 -163
  147. data/test/functional/multi_solr_search_test.rb +0 -51
  148. data/test/models/author.rb +0 -10
  149. data/test/models/book.rb +0 -10
  150. data/test/models/category.rb +0 -8
  151. data/test/models/electronic.rb +0 -21
  152. data/test/models/gadget.rb +0 -9
  153. data/test/models/movie.rb +0 -17
  154. data/test/models/novel.rb +0 -2
  155. data/test/models/post.rb +0 -3
  156. data/test/models/posting.rb +0 -11
  157. data/test/test_helper.rb +0 -51
  158. data/test/unit/acts_methods_shoulda.rb +0 -70
  159. data/test/unit/class_methods_shoulda.rb +0 -88
  160. data/test/unit/common_methods_shoulda.rb +0 -112
  161. data/test/unit/instance_methods_shoulda.rb +0 -326
  162. data/test/unit/lazy_document_shoulda.rb +0 -35
  163. data/test/unit/parser_instance.rb +0 -19
  164. data/test/unit/parser_methods_shoulda.rb +0 -278
  165. data/test/unit/solr_instance.rb +0 -46
  166. data/test/unit/test_helper.rb +0 -14
  167. data/websolr-rails.gemspec +0 -243
data/lib/solr/document.rb DELETED
@@ -1,78 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- require 'solr/xml'
14
- require 'solr/field'
15
-
16
- class Solr::Document
17
- include Enumerable
18
- attr_accessor :boost
19
- attr_reader :fields
20
-
21
- # Create a new Solr::Document, optionally passing in a hash of
22
- # key/value pairs for the fields
23
- #
24
- # doc = Solr::Document.new(:creator => 'Jorge Luis Borges')
25
- def initialize(hash={})
26
- @fields = []
27
- self << hash
28
- end
29
-
30
- # Append a Solr::Field
31
- #
32
- # doc << Solr::Field.new(:creator => 'Jorge Luis Borges')
33
- #
34
- # If you are truly lazy you can simply pass in a hash:
35
- #
36
- # doc << {:creator => 'Jorge Luis Borges'}
37
- def <<(fields)
38
- case fields
39
- when Hash
40
- fields.each_pair do |name,value|
41
- if value.respond_to?(:each) && !value.is_a?(String)
42
- value.each {|v| @fields << Solr::Field.new(name => v)}
43
- else
44
- @fields << Solr::Field.new(name => value)
45
- end
46
- end
47
- when Solr::Field
48
- @fields << fields
49
- else
50
- raise "must pass in Solr::Field or Hash"
51
- end
52
- end
53
-
54
- # shorthand to allow hash lookups
55
- # doc['name']
56
- def [](name)
57
- field = @fields.find {|f| f.name == name.to_s}
58
- return field.value if field
59
- return nil
60
- end
61
-
62
- # shorthand to assign as a hash
63
- def []=(name,value)
64
- @fields << Solr::Field.new(name => value)
65
- end
66
-
67
- # convert the Document to a REXML::Element
68
- def to_xml
69
- e = Solr::XML::Element.new 'doc'
70
- e.attributes['boost'] = @boost.to_s if @boost
71
- @fields.each {|f| e.add_element(f.to_xml)}
72
- return e
73
- end
74
-
75
- def each(*args, &blk)
76
- fields.each(&blk)
77
- end
78
- end
@@ -1,13 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- class Solr::Exception < Exception; end
data/lib/solr/field.rb DELETED
@@ -1,39 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- require 'solr/xml'
14
- require 'time'
15
-
16
- class Solr::Field
17
- VALID_PARAMS = [:boost]
18
- attr_accessor :name
19
- attr_accessor :value
20
- attr_accessor :boost
21
-
22
- # Accepts an optional <tt>:boost</tt> parameter, used to boost the relevance of a particular field.
23
- def initialize(params)
24
- @boost = params[:boost]
25
- name_key = (params.keys - VALID_PARAMS).first
26
- @name, @value = name_key.to_s, params[name_key]
27
- # Convert any Time values into UTC/XML schema format (which Solr requires).
28
- @value = @value.respond_to?(:utc) ? @value.utc.xmlschema : @value.to_s
29
- end
30
-
31
- def to_xml
32
- e = Solr::XML::Element.new 'field'
33
- e.attributes['name'] = @name
34
- e.attributes['boost'] = @boost.to_s if @boost
35
- e.text = @value
36
- return e
37
- end
38
-
39
- end
data/lib/solr/importer.rb DELETED
@@ -1,19 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- module Solr; module Importer; end; end
14
- require 'solr/importer/mapper'
15
- require 'solr/importer/array_mapper'
16
- require 'solr/importer/delimited_file_source'
17
- require 'solr/importer/hpricot_mapper'
18
- require 'solr/importer/xpath_mapper'
19
- require 'solr/importer/solr_source'
@@ -1,26 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
-
14
-
15
- class Solr::Importer::ArrayMapper < Solr::Importer::Mapper
16
- # TODO document that initializer takes an array of Mappers [mapper1, mapper2, ... mapperN]
17
-
18
- # TODO: make merge conflict handling configurable. as is, the last map fields win.
19
- def map(orig_data_array)
20
- mapped_data = {}
21
- orig_data_array.each_with_index do |data,i|
22
- mapped_data.merge!(@mapping[i].map(data))
23
- end
24
- mapped_data
25
- end
26
- end
@@ -1,38 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- # For files with the first line containing field names
14
- # Currently not designed for enormous files, as all lines are
15
- # read into an array
16
- class Solr::Importer::DelimitedFileSource
17
- include Enumerable
18
-
19
- def initialize(filename, splitter=/\t/)
20
- @filename = filename
21
- @splitter = splitter
22
- end
23
-
24
- def each
25
- lines = IO.readlines(@filename)
26
- headers = lines[0].split(@splitter).collect{|h| h.chomp}
27
-
28
- lines[1..-1].each do |line|
29
- data = headers.zip(line.split(@splitter).collect{|s| s.chomp})
30
- def data.[](key)
31
- self.assoc(key.to_s)[1]
32
- end
33
-
34
- yield(data)
35
- end
36
- end
37
-
38
- end
@@ -1,27 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- begin
14
- require 'hpricot'
15
-
16
- class Solr::Importer::HpricotMapper < Solr::Importer::Mapper
17
- def field_data(doc, path)
18
- doc.search(path.to_s).collect { |e| e.inner_html }
19
- end
20
- end
21
- rescue LoadError => e # If we can't load hpricot
22
- class Solr::Importer::HpricotMapper
23
- def initialize(mapping, options={})
24
- raise "Hpricot not installed."
25
- end
26
- end
27
- end
@@ -1,51 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- class Solr::Importer::Mapper
14
- def initialize(mapping, options={})
15
- @mapping = mapping
16
- @options = options
17
- end
18
-
19
- def field_data(orig_data, field_name)
20
- orig_data[field_name]
21
- end
22
-
23
- def mapped_field_value(orig_data, field_mapping)
24
- case field_mapping
25
- when String
26
- field_mapping
27
- when Proc
28
- field_mapping.call(orig_data) # TODO pass in more context, like self or a function for field_data, etc
29
- when Symbol
30
- field_data(orig_data, @options[:stringify_symbols] ? field_mapping.to_s : field_mapping)
31
- when Enumerable
32
- field_mapping.collect {|orig_field_name| mapped_field_value(orig_data, orig_field_name)}.flatten
33
- else
34
- raise "Unknown mapping for #{field_mapping}"
35
- end
36
- end
37
-
38
- def map(orig_data)
39
- mapped_data = {}
40
- @mapping.each do |solr_name, field_mapping|
41
- value = mapped_field_value(orig_data, field_mapping)
42
- mapped_data[solr_name] = value if value
43
- end
44
-
45
- mapped_data
46
- end
47
-
48
-
49
-
50
-
51
- end
@@ -1,43 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- require 'solr'
14
-
15
- class Solr::Importer::SolrSource
16
- def initialize(solr_url, query, filter_queries=nil, options={})
17
- @connection = Solr::Connection.new(solr_url)
18
- @query = query
19
- @filter_queries = filter_queries
20
-
21
- @page_size = options[:page_size] || 1000
22
- @field_list = options[:field_list] || ["*"]
23
- end
24
-
25
- def each
26
- done = false
27
- start = 0
28
- until done do
29
- # request N documents from a starting point
30
- request = Solr::Request::Standard.new(:query => @query,
31
- :rows => @page_size,
32
- :start => start,
33
- :field_list => @field_list,
34
- :filter_queries => @filter_queries)
35
- response = @connection.send(request)
36
- response.each do |doc|
37
- yield doc # TODO: perhaps convert to HashWithIndifferentAccess.new(doc), so stringify_keys isn't necessary
38
- end
39
- done = start + @page_size >= response.total_hits
40
- start = start + @page_size
41
- end
42
- end
43
- end
@@ -1,35 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- begin
14
- require 'xml/libxml'
15
-
16
- # For files with the first line containing field names
17
- class Solr::Importer::XPathMapper < Solr::Importer::Mapper
18
- def field_data(doc, xpath)
19
- doc.find(xpath.to_s).collect do |node|
20
- case node
21
- when XML::Attr
22
- node.value
23
- when XML::Node
24
- node.content
25
- end
26
- end
27
- end
28
- end
29
- rescue LoadError => e # If we can't load libxml
30
- class Solr::Importer::XPathMapper
31
- def initialize(mapping, options={})
32
- raise "libxml not installed"
33
- end
34
- end
35
- end
data/lib/solr/indexer.rb DELETED
@@ -1,52 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- class Solr::Indexer
14
- attr_reader :solr
15
-
16
- # TODO: document options!
17
- def initialize(data_source, mapper_or_mapping, options={})
18
- solr_url = options[:solr_url] || ENV["SOLR_URL"] || "http://localhost:8983/solr"
19
- @solr = Solr::Connection.new(solr_url, options) #TODO - these options contain the solr_url and debug keys also, so tidy up what gets passed
20
-
21
- @data_source = data_source
22
- @mapper = mapper_or_mapping.is_a?(Hash) ? Solr::Importer::Mapper.new(mapper_or_mapping) : mapper_or_mapping
23
-
24
- @buffer_docs = options[:buffer_docs]
25
- @debug = options[:debug]
26
- end
27
-
28
- def index
29
- buffer = []
30
- @data_source.each do |record|
31
- document = @mapper.map(record)
32
-
33
- # TODO: check arrity of block, if 3, pass counter as 3rd argument
34
- yield(record, document) if block_given? # TODO check return of block, if not true then don't index, or perhaps if document.empty?
35
-
36
- buffer << document
37
-
38
- if !@buffer_docs || buffer.size == @buffer_docs
39
- add_docs(buffer)
40
- buffer.clear
41
- end
42
- end
43
- add_docs(buffer) if !buffer.empty?
44
-
45
- @solr.commit unless @debug
46
- end
47
-
48
- def add_docs(documents)
49
- @solr.add(documents) unless @debug
50
- puts documents.inspect if @debug
51
- end
52
- end
data/lib/solr/request.rb DELETED
@@ -1,26 +0,0 @@
1
- # The ASF licenses this file to You under the Apache License, Version 2.0
2
- # (the "License"); you may not use this file except in compliance with
3
- # the License. You may obtain a copy of the License at
4
- #
5
- # http://www.apache.org/licenses/LICENSE-2.0
6
- #
7
- # Unless required by applicable law or agreed to in writing, software
8
- # distributed under the License is distributed on an "AS IS" BASIS,
9
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10
- # See the License for the specific language governing permissions and
11
- # limitations under the License.
12
-
13
- module Solr; module Request; end; end
14
- require 'solr/request/add_document'
15
- require 'solr/request/modify_document'
16
- require 'solr/request/base'
17
- require 'solr/request/commit'
18
- require 'solr/request/delete'
19
- require 'solr/request/ping'
20
- require 'solr/request/select'
21
- require 'solr/request/standard'
22
- require 'solr/request/spellcheck'
23
- require 'solr/request/dismax'
24
- require 'solr/request/update'
25
- require 'solr/request/index_info'
26
- require 'solr/request/optimize'