honkster-acts_as_solr 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. data/CHANGE_LOG +233 -0
  2. data/LICENSE +19 -0
  3. data/README.markdown +118 -0
  4. data/README.rdoc +107 -0
  5. data/Rakefile +68 -0
  6. data/TESTING_THE_PLUGIN +25 -0
  7. data/VERSION +1 -0
  8. data/lib/acts_as_solr/acts_methods.rb +279 -0
  9. data/lib/acts_as_solr/class_methods.rb +236 -0
  10. data/lib/acts_as_solr/common_methods.rb +89 -0
  11. data/lib/acts_as_solr/deprecation.rb +61 -0
  12. data/lib/acts_as_solr/instance_methods.rb +166 -0
  13. data/lib/acts_as_solr/lazy_document.rb +18 -0
  14. data/lib/acts_as_solr/parser_methods.rb +201 -0
  15. data/lib/acts_as_solr/search_results.rb +68 -0
  16. data/lib/acts_as_solr/solr_fixtures.rb +13 -0
  17. data/lib/acts_as_solr/tasks/database.rake +16 -0
  18. data/lib/acts_as_solr/tasks/solr.rake +132 -0
  19. data/lib/acts_as_solr/tasks/test.rake +5 -0
  20. data/lib/acts_as_solr/tasks.rb +10 -0
  21. data/lib/acts_as_solr.rb +64 -0
  22. data/lib/solr/connection.rb +177 -0
  23. data/lib/solr/document.rb +75 -0
  24. data/lib/solr/exception.rb +13 -0
  25. data/lib/solr/field.rb +36 -0
  26. data/lib/solr/importer/array_mapper.rb +26 -0
  27. data/lib/solr/importer/delimited_file_source.rb +38 -0
  28. data/lib/solr/importer/hpricot_mapper.rb +27 -0
  29. data/lib/solr/importer/mapper.rb +51 -0
  30. data/lib/solr/importer/solr_source.rb +41 -0
  31. data/lib/solr/importer/xpath_mapper.rb +35 -0
  32. data/lib/solr/importer.rb +19 -0
  33. data/lib/solr/indexer.rb +52 -0
  34. data/lib/solr/request/add_document.rb +58 -0
  35. data/lib/solr/request/base.rb +36 -0
  36. data/lib/solr/request/commit.rb +29 -0
  37. data/lib/solr/request/delete.rb +48 -0
  38. data/lib/solr/request/dismax.rb +46 -0
  39. data/lib/solr/request/index_info.rb +22 -0
  40. data/lib/solr/request/modify_document.rb +46 -0
  41. data/lib/solr/request/optimize.rb +19 -0
  42. data/lib/solr/request/ping.rb +36 -0
  43. data/lib/solr/request/select.rb +54 -0
  44. data/lib/solr/request/spellcheck.rb +30 -0
  45. data/lib/solr/request/standard.rb +402 -0
  46. data/lib/solr/request/update.rb +23 -0
  47. data/lib/solr/request.rb +26 -0
  48. data/lib/solr/response/add_document.rb +17 -0
  49. data/lib/solr/response/base.rb +42 -0
  50. data/lib/solr/response/commit.rb +15 -0
  51. data/lib/solr/response/delete.rb +13 -0
  52. data/lib/solr/response/dismax.rb +8 -0
  53. data/lib/solr/response/index_info.rb +26 -0
  54. data/lib/solr/response/modify_document.rb +17 -0
  55. data/lib/solr/response/optimize.rb +14 -0
  56. data/lib/solr/response/ping.rb +26 -0
  57. data/lib/solr/response/ruby.rb +42 -0
  58. data/lib/solr/response/select.rb +17 -0
  59. data/lib/solr/response/spellcheck.rb +20 -0
  60. data/lib/solr/response/standard.rb +60 -0
  61. data/lib/solr/response/xml.rb +39 -0
  62. data/lib/solr/response.rb +27 -0
  63. data/lib/solr/solrtasks.rb +27 -0
  64. data/lib/solr/util.rb +32 -0
  65. data/lib/solr/xml.rb +44 -0
  66. data/lib/solr.rb +26 -0
  67. data/solr/CHANGES.txt +1207 -0
  68. data/solr/LICENSE.txt +712 -0
  69. data/solr/NOTICE.txt +90 -0
  70. data/solr/etc/jetty.xml +205 -0
  71. data/solr/etc/webdefault.xml +379 -0
  72. data/solr/lib/easymock.jar +0 -0
  73. data/solr/lib/jetty-6.1.3.jar +0 -0
  74. data/solr/lib/jetty-util-6.1.3.jar +0 -0
  75. data/solr/lib/jsp-2.1/ant-1.6.5.jar +0 -0
  76. data/solr/lib/jsp-2.1/core-3.1.1.jar +0 -0
  77. data/solr/lib/jsp-2.1/jsp-2.1.jar +0 -0
  78. data/solr/lib/jsp-2.1/jsp-api-2.1.jar +0 -0
  79. data/solr/lib/servlet-api-2.4.jar +0 -0
  80. data/solr/lib/servlet-api-2.5-6.1.3.jar +0 -0
  81. data/solr/lib/xpp3-1.1.3.4.O.jar +0 -0
  82. data/solr/solr/README.txt +52 -0
  83. data/solr/solr/bin/abc +176 -0
  84. data/solr/solr/bin/abo +176 -0
  85. data/solr/solr/bin/backup +108 -0
  86. data/solr/solr/bin/backupcleaner +142 -0
  87. data/solr/solr/bin/commit +128 -0
  88. data/solr/solr/bin/optimize +129 -0
  89. data/solr/solr/bin/readercycle +129 -0
  90. data/solr/solr/bin/rsyncd-disable +77 -0
  91. data/solr/solr/bin/rsyncd-enable +76 -0
  92. data/solr/solr/bin/rsyncd-start +145 -0
  93. data/solr/solr/bin/rsyncd-stop +105 -0
  94. data/solr/solr/bin/scripts-util +83 -0
  95. data/solr/solr/bin/snapcleaner +148 -0
  96. data/solr/solr/bin/snapinstaller +168 -0
  97. data/solr/solr/bin/snappuller +248 -0
  98. data/solr/solr/bin/snappuller-disable +77 -0
  99. data/solr/solr/bin/snappuller-enable +77 -0
  100. data/solr/solr/bin/snapshooter +109 -0
  101. data/solr/solr/conf/admin-extra.html +31 -0
  102. data/solr/solr/conf/protwords.txt +21 -0
  103. data/solr/solr/conf/schema.xml +126 -0
  104. data/solr/solr/conf/scripts.conf +24 -0
  105. data/solr/solr/conf/solrconfig.xml +458 -0
  106. data/solr/solr/conf/stopwords.txt +57 -0
  107. data/solr/solr/conf/synonyms.txt +31 -0
  108. data/solr/solr/conf/xslt/example.xsl +132 -0
  109. data/solr/solr/conf/xslt/example_atom.xsl +63 -0
  110. data/solr/solr/conf/xslt/example_rss.xsl +62 -0
  111. data/solr/start.jar +0 -0
  112. data/solr/webapps/solr.war +0 -0
  113. data/test/config/solr.yml +2 -0
  114. data/test/db/connections/mysql/connection.rb +10 -0
  115. data/test/db/connections/sqlite/connection.rb +8 -0
  116. data/test/db/migrate/001_create_books.rb +15 -0
  117. data/test/db/migrate/002_create_movies.rb +12 -0
  118. data/test/db/migrate/003_create_categories.rb +11 -0
  119. data/test/db/migrate/004_create_electronics.rb +16 -0
  120. data/test/db/migrate/005_create_authors.rb +12 -0
  121. data/test/db/migrate/006_create_postings.rb +9 -0
  122. data/test/db/migrate/007_create_posts.rb +13 -0
  123. data/test/db/migrate/008_create_gadgets.rb +11 -0
  124. data/test/fixtures/authors.yml +9 -0
  125. data/test/fixtures/books.yml +13 -0
  126. data/test/fixtures/categories.yml +7 -0
  127. data/test/fixtures/db_definitions/mysql.sql +41 -0
  128. data/test/fixtures/electronics.yml +49 -0
  129. data/test/fixtures/movies.yml +9 -0
  130. data/test/fixtures/postings.yml +10 -0
  131. data/test/functional/acts_as_solr_test.rb +413 -0
  132. data/test/functional/association_indexing_test.rb +37 -0
  133. data/test/functional/faceted_search_test.rb +163 -0
  134. data/test/functional/multi_solr_search_test.rb +51 -0
  135. data/test/models/author.rb +10 -0
  136. data/test/models/book.rb +10 -0
  137. data/test/models/category.rb +8 -0
  138. data/test/models/electronic.rb +21 -0
  139. data/test/models/gadget.rb +9 -0
  140. data/test/models/movie.rb +17 -0
  141. data/test/models/novel.rb +2 -0
  142. data/test/models/post.rb +3 -0
  143. data/test/models/posting.rb +11 -0
  144. data/test/test_helper.rb +51 -0
  145. data/test/unit/acts_methods_shoulda.rb +68 -0
  146. data/test/unit/class_methods_shoulda.rb +85 -0
  147. data/test/unit/common_methods_shoulda.rb +111 -0
  148. data/test/unit/instance_methods_shoulda.rb +318 -0
  149. data/test/unit/lazy_document_shoulda.rb +34 -0
  150. data/test/unit/parser_instance.rb +19 -0
  151. data/test/unit/parser_methods_shoulda.rb +268 -0
  152. data/test/unit/solr_instance.rb +44 -0
  153. data/test/unit/test_helper.rb +22 -0
  154. metadata +239 -0
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ # The ASF licenses this file to You under the Apache License, Version 2.0
3
+ # (the "License"); you may not use this file except in compliance with
4
+ # the License. You may obtain a copy of the License at
5
+ #
6
+ # http://www.apache.org/licenses/LICENSE-2.0
7
+ #
8
+ # Unless required by applicable law or agreed to in writing, software
9
+ # distributed under the License is distributed on an "AS IS" BASIS,
10
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11
+ # See the License for the specific language governing permissions and
12
+ # limitations under the License.
13
+
14
+ # TODO: fill out Solr tasks: start, stop, ping, optimize, etc.
15
+
16
+ require 'rake'
17
+ require 'rake/tasklib'
18
+
19
+ module Solr
20
+ namespace :solr do
21
+ desc "Start Solr"
22
+ task :start do
23
+ # TODO: actually start it up!
24
+ puts "Starting..."
25
+ end
26
+ end
27
+ end
data/lib/solr/util.rb ADDED
@@ -0,0 +1,32 @@
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::Util
14
+ # paired_array_each([key1,value1,key2,value2]) yields twice:
15
+ # |key1,value1| and |key2,value2|
16
+ def self.paired_array_each(a, &block)
17
+ 0.upto(a.size / 2 - 1) do |i|
18
+ n = i * 2
19
+ yield(a[n], a[n+1])
20
+ end
21
+ end
22
+
23
+ # paired_array_to_hash([key1,value1,key2,value2]) => {key1 => value1, key2, value2}
24
+ def self.paired_array_to_hash(a)
25
+ Hash[*a]
26
+ end
27
+
28
+ def self.query_parser_escape(string)
29
+ # backslash prefix everything that isn't a word character
30
+ string.gsub(/(\W)/,'\\\\\1')
31
+ end
32
+ end
data/lib/solr/xml.rb ADDED
@@ -0,0 +1,44 @@
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::XML
14
+ end
15
+
16
+ begin
17
+
18
+ # If we can load rubygems and libxml-ruby...
19
+ require 'rubygems'
20
+ require 'xml/libxml'
21
+ raise "acts_as_solr requires libxml-ruby 0.7 or greater" unless XML::Node.public_instance_methods.include?("attributes")
22
+
23
+ # then make a few modifications to XML::Node so it can stand in for REXML::Element
24
+ class XML::Node
25
+ # element.add_element(another_element) should work
26
+ alias_method :add_element, :<<
27
+
28
+
29
+ # element.text = "blah" should work
30
+ def text=(x)
31
+ self << x.to_s
32
+ end
33
+ end
34
+
35
+ # And use XML::Node for our XML generation
36
+ Solr::XML::Element = XML::Node
37
+
38
+ rescue LoadError => e # If we can't load either rubygems or libxml-ruby
39
+ puts "Requiring REXML"
40
+ # Just use REXML.
41
+ require 'rexml/document'
42
+ Solr::XML::Element = REXML::Element
43
+
44
+ end
data/lib/solr.rb ADDED
@@ -0,0 +1,26 @@
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; end
14
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/exception")
15
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/request")
16
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/connection")
17
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/response")
18
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/util")
19
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/xml")
20
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/importer")
21
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/indexer")
22
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/xml")
23
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/field")
24
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/request/base")
25
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/document")
26
+ require File.expand_path("#{File.dirname(__FILE__)}/solr/request/update")
data/solr/CHANGES.txt ADDED
@@ -0,0 +1,1207 @@
1
+ Apache Solr Version 1.3.0
2
+ Release Notes
3
+
4
+ Introduction
5
+ ------------
6
+ Apache Solr is an open source enterprise search server based on the Lucene Java
7
+ search library, with XML/HTTP and JSON APIs, hit highlighting, faceted search,
8
+ caching, replication, and a web administration interface. It runs in a Java
9
+ servlet container such as Tomcat.
10
+
11
+ See http://lucene.apache.org/solr for more information.
12
+
13
+
14
+ Getting Started
15
+ ---------------
16
+ You need a Java 1.5 VM or later installed.
17
+ In this release, there is an example Solr server including a bundled
18
+ servlet container in the directory named "example".
19
+ See the tutorial at http://lucene.apache.org/solr/tutorial.html
20
+
21
+
22
+ $Id: CHANGES.txt 694377 2008-09-11 17:40:11Z klaas $
23
+
24
+ ================== Release 1.3.0 ==================
25
+
26
+
27
+ Upgrading from Solr 1.2
28
+ -----------------------
29
+ IMPORTANT UPGRADE NOTE: In a master/slave configuration, all searchers/slaves
30
+ should be upgraded before the master! If the master were to be updated
31
+ first, the older searchers would not be able to read the new index format.
32
+
33
+ The Porter snowball based stemmers in Lucene were updated (LUCENE-1142),
34
+ and are not guaranteed to be backward compatible at the index level
35
+ (the stem of certain words may have changed). Re-indexing is recommended.
36
+
37
+ Older Apache Solr installations can be upgraded by replacing
38
+ the relevant war file with the new version. No changes to configuration
39
+ files should be needed.
40
+
41
+ This version of Solr contains a new version of Lucene implementing
42
+ an updated index format. This version of Solr/Lucene can still read
43
+ and update indexes in the older formats, and will convert them to the new
44
+ format on the first index change. Be sure to backup your index before
45
+ upgrading in case you need to downgrade.
46
+
47
+ Solr now recognizes HTTP Request headers related to HTTP Caching (see
48
+ RFC 2616 sec13) and will by default respond with "304 Not Modified"
49
+ when appropriate. This should only affect users who access Solr via
50
+ an HTTP Cache, or via a Web-browser that has an internal cache, but if
51
+ you wish to suppress this behavior an '<httpCaching never304="true"/>'
52
+ option can be added to your solrconfig.xml. See the wiki (or the
53
+ example solrconfig.xml) for more details...
54
+ http://wiki.apache.org/solr/SolrConfigXml#HTTPCaching
55
+
56
+ In Solr 1.2, DateField did not enforce the canonical representation of
57
+ the ISO 8601 format when parsing incoming data, and did not generation
58
+ the canonical format when generating dates from "Date Math" strings
59
+ (particularly as it pertains to milliseconds ending in trailing zeros)
60
+ -- As a result equivalent dates could not always be compared properly.
61
+ This problem is corrected in Solr 1.3, but DateField users that might
62
+ have been affected by indexing inconsistent formats of equivilent
63
+ dates (ie: 1995-12-31T23:59:59Z vs 1995-12-31T23:59:59.000Z) may want
64
+ to consider reindexing to correct these inconsistencies. Users who
65
+ depend on some of the the "broken" behavior of DateField in Solr 1.2
66
+ (specificly: accepting any input that ends in a 'Z') should consider
67
+ using the LegacyDateField class as a possible alternative. Users that
68
+ desire 100% backwards compatibility should consider using the Solr 1.2
69
+ version of DateField.
70
+
71
+ Due to some changes in the lifecycle of TokenFilterFactories, users of
72
+ Solr 1.2 who have written Java code which constructs new instances of
73
+ StopFilterFactory, SynonymFilterFactory, or EnglishProterFilterFactory
74
+ will need to modify their code by adding a line like the following
75
+ prior to using the factory object...
76
+ factory.inform(SolrCore.getSolrCore().getSolrConfig().getResourceLoader());
77
+ These lifecycle changes do not affect people who use Solr "out of the
78
+ box" or who have developed their own TokenFilterFactory plugins. More
79
+ info can be found in SOLR-594.
80
+
81
+ The python client that used to ship with Solr is no longer included in
82
+ the distribution (see client/python/README.txt).
83
+
84
+ Detailed Change List
85
+ --------------------
86
+
87
+ New Features
88
+ 1. SOLR-69: Adding MoreLikeThisHandler to search for similar documents using
89
+ lucene contrib/queries MoreLikeThis. MoreLikeThis is also available from
90
+ the StandardRequestHandler using ?mlt=true. (bdelacretaz, ryan)
91
+
92
+ 2. SOLR-253: Adding KeepWordFilter and KeepWordFilterFactory. A TokenFilter
93
+ that keeps tokens with text in the registered keeplist. This behaves like
94
+ the inverse of StopFilter. (ryan)
95
+
96
+ 3. SOLR-257: WordDelimiterFilter has a new parameter splitOnCaseChange,
97
+ which can be set to 0 to disable splitting "PowerShot" => "Power" "Shot".
98
+ (klaas)
99
+
100
+ 4. SOLR-193: Adding SolrDocument and SolrInputDocument to represent documents
101
+ outside of the lucene Document infrastructure. This class will be used
102
+ by clients and for processing documents. (ryan)
103
+
104
+ 5. SOLR-244: Added ModifiableSolrParams - a SolrParams implementation that
105
+ help you change values after initialization. (ryan)
106
+
107
+ 6. SOLR-20: Added a java client interface with two implementations. One
108
+ implementation uses commons httpclient to connect to solr via HTTP. The
109
+ other connects to solr directly. Check client/java/solrj. This addition
110
+ also includes tests that start jetty and test a connection using the full
111
+ HTTP request cycle. (Darren Erik Vengroff, Will Johnson, ryan)
112
+
113
+ 7. SOLR-133: Added StaxUpdateRequestHandler that uses StAX for XML parsing.
114
+ This implementation has much better error checking and lets you configure
115
+ a custom UpdateRequestProcessor that can selectively process update
116
+ requests depending on the request attributes. This class will likely
117
+ replace XmlUpdateRequestHandler. (Thorsten Scherler, ryan)
118
+
119
+ 8. SOLR-264: Added RandomSortField, a utility field with a random sort order.
120
+ The seed is based on a hash of the field name, so a dynamic field
121
+ of this type is useful for generating different random sequences.
122
+ This field type should only be used for sorting or as a value source
123
+ in a FunctionQuery (ryan, hossman, yonik)
124
+
125
+ 9. SOLR-266: Adding show=schema to LukeRequestHandler to show the parsed
126
+ schema fields and field types. (ryan)
127
+
128
+ 10. SOLR-133: The UpdateRequestHandler now accepts multiple delete options
129
+ within a single request. For example, sending:
130
+ <delete><id>1</id><id>2</id></delete> will delete both 1 and 2. (ryan)
131
+
132
+ 11. SOLR-269: Added UpdateRequestProcessor plugin framework. This provides
133
+ a reasonable place to process documents after they are parsed and
134
+ before they are committed to the index. This is a good place for custom
135
+ document manipulation or document based authorization. (yonik, ryan)
136
+
137
+ 12. SOLR-260: Converting to a standard PluginLoader framework. This reworks
138
+ RequestHandlers, FieldTypes, and QueryResponseWriters to share the same
139
+ base code for loading and initializing plugins. This adds a new
140
+ configuration option to define the default RequestHandler and
141
+ QueryResponseWriter in XML using default="true". (ryan)
142
+
143
+ 13. SOLR-225: Enable pluggable highlighting classes. Allow configurable
144
+ highlighting formatters and Fragmenters. (ryan)
145
+
146
+ 14. SOLR-273/376/452/516: Added hl.maxAnalyzedChars highlighting parameter, defaulting
147
+ to 50k, hl.alternateField, which allows the specification of a backup
148
+ field to use as summary if no keywords are matched, and hl.mergeContiguous,
149
+ which combines fragments if they are adjacent in the source document.
150
+ (klaas, Grant Ingersoll, Koji Sekiguchi via klaas)
151
+
152
+ 15. SOLR-291: Control maximum number of documents to cache for any entry
153
+ in the queryResultCache via queryResultMaxDocsCached solrconfig.xml
154
+ entry. (Koji Sekiguchi via yonik)
155
+
156
+ 16. SOLR-240: New <lockType> configuration setting in <mainIndex> and
157
+ <indexDefaults> blocks supports all Lucene builtin LockFactories.
158
+ 'single' is recommended setting, but 'simple' is default for total
159
+ backwards compatibility.
160
+ (Will Johnson via hossman)
161
+
162
+ 17. SOLR-248: Added CapitalizationFilterFactory that creates tokens with
163
+ normalized capitalization. This filter is useful for facet display,
164
+ but will not work with a prefix query. (ryan)
165
+ SOLR-468: Change to the semantics to keep the original token, not the token in the Map. Also switched to
166
+ use Lucene's new reusable token capabilities. (gsingers)
167
+
168
+ 18. SOLR-307: Added NGramFilterFactory and EdgeNGramFilterFactory.
169
+ (Thomas Peuss via Otis Gospodnetic)
170
+
171
+ 19. SOLR-305: analysis.jsp can be given a fieldtype instead of a field
172
+ name. (hossman)
173
+
174
+ 20. SOLR-102: Added RegexFragmenter, which splits text for highlighting
175
+ based on a given pattern. (klaas)
176
+
177
+ 21. SOLR-258: Date Faceting added to SimpleFacets. Facet counts
178
+ computed for ranges of size facet.date.gap (a DateMath expression)
179
+ between facet.date.start and facet.date.end. (hossman)
180
+
181
+ 22. SOLR-196: A PHP serialized "phps" response writer that returns a
182
+ serialized array that can be used with the PHP function unserialize,
183
+ and a PHP response writer "php" that may be used by eval.
184
+ (Nick Jenkin, Paul Borgermans, Pieter Berkel via yonik)
185
+
186
+ 23. SOLR-308: A new UUIDField class which accepts UUID string values,
187
+ as well as the special value of "NEW" which triggers generation of
188
+ a new random UUID.
189
+ (Thomas Peuss via hossman)
190
+
191
+ 24. SOLR-349: New FunctionQuery functions: sum, product, div, pow, log,
192
+ sqrt, abs, scale, map. Constants may now be used as a value source.
193
+ (yonik)
194
+
195
+ 25. SOLR-359: Add field type className to Luke response, and enabled access
196
+ to the detailed field information from the solrj client API.
197
+ (Grant Ingersoll via ehatcher)
198
+
199
+ 26. SOLR-334: Pluggable query parsers. Allows specification of query
200
+ type and arguments as a prefix on a query string. (yonik)
201
+
202
+ 27. SOLR-351: External Value Source. An external file may be used
203
+ to specify the values of a field, currently usable as
204
+ a ValueSource in a FunctionQuery. (yonik)
205
+
206
+ 28. SOLR-395: Many new features for the spell checker implementation, including
207
+ an extended response mode with much richer output, multi-word spell checking,
208
+ and a bevy of new and renamed options (see the wiki).
209
+ (Mike Krimerman, Scott Taber via klaas).
210
+
211
+ 29. SOLR-408: Added PingRequestHandler and deprecated SolrCore.getPingQueryRequest().
212
+ Ping requests should be configured using standard RequestHandler syntax in
213
+ solrconfig.xml rather then using the <pingQuery></pingQuery> syntax.
214
+ (Karsten Sperling via ryan)
215
+
216
+ 30. SOLR-281: Added a 'Search Component' interface and converted StandardRequestHandler
217
+ and DisMaxRequestHandler to use this framework.
218
+ (Sharad Agarwal, Henri Biestro, yonik, ryan)
219
+
220
+ 31. SOLR-176: Add detailed timing data to query response output. The SearchHandler
221
+ interface now returns how long each section takes. (klaas)
222
+
223
+ 32. SOLR-414: Plugin initialization now supports SolrCore and ResourceLoader "Aware"
224
+ plugins. Plugins that implement SolrCoreAware or ResourceLoaderAware are
225
+ informed about the SolrCore/ResourceLoader. (Henri Biestro, ryan)
226
+
227
+ 33. SOLR-350: Support multiple SolrCores running in the same solr instance and allows
228
+ runtime runtime management for any running SolrCore. If a solr.xml file exists
229
+ in solr.home, this file is used to instanciate multiple cores and enables runtime
230
+ core manipulation. For more informaion see: http://wiki.apache.org/solr/CoreAdmin
231
+ (Henri Biestro, ryan)
232
+
233
+ 34. SOLR-447: Added an single request handler that will automatically register all
234
+ standard admin request handlers. This replaces the need to register (and maintain)
235
+ the set of admin request handlers. Assuming solrconfig.xml includes:
236
+ <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
237
+ This will register: Luke/SystemInfo/PluginInfo/ThreadDump/PropertiesRequestHandler.
238
+ (ryan)
239
+
240
+ 35. SOLR-142: Added RawResponseWriter and ShowFileRequestHandler. This returns config
241
+ files directly. If AdminHandlers are configured, this will be added automatically.
242
+ The jsp files /admin/get-file.jsp and /admin/raw-schema.jsp have been deprecated.
243
+ The deprecated <admin><gettableFiles> will be automatically registered with
244
+ a ShowFileRequestHandler instance for backwards compatibility. (ryan)
245
+
246
+ 36. SOLR-446: TextResponseWriter can write SolrDocuments and SolrDocumentLists the
247
+ same way it writes Document and DocList. (yonik, ryan)
248
+
249
+ 37. SOLR-418: Adding a query elevation component. This is an optional component to
250
+ elevate some documents to the top positions (or exclude them) for a given query.
251
+ (ryan)
252
+
253
+ 38. SOLR-478: Added ability to get back unique key information from the LukeRequestHandler. (gsingers)
254
+
255
+ 39. SOLR-127: HTTP Caching awareness. Solr now recognizes HTTP Request
256
+ headers related to HTTP Caching (see RFC 2616 sec13) and will respond
257
+ with "304 Not Modified" when appropriate. New options have been added
258
+ to solrconfig.xml to influence this behavior.
259
+ (Thomas Peuss via hossman)
260
+
261
+ 40. SOLR-303: Distributed Search over HTTP. Specification of shards
262
+ argument causes Solr to query those shards and merge the results
263
+ into a single response. Querying, field faceting (sorted only),
264
+ query faceting, highlighting, and debug information are supported
265
+ in distributed mode.
266
+ (Sharad Agarwal, Patrick O'Leary, Sabyasachi Dalal, Stu Hood,
267
+ Jayson Minard, Lars Kotthoff, ryan, yonik)
268
+
269
+ 41. SOLR-356: Pluggable functions (value sources) that allow
270
+ registration of new functions via solrconfig.xml
271
+ (Doug Daniels via yonik)
272
+
273
+ 42. SOLR-494: Added cool admin Ajaxed schema explorer.
274
+ (Greg Ludington via ehatcher)
275
+
276
+ 43. SOLR-497: Added date faceting to the QueryResponse in SolrJ
277
+ and QueryResponseTest (Shalin Shekhar Mangar via gsingers)
278
+
279
+ 44. SOLR-486: Binary response format, faster and smaller
280
+ than XML and JSON response formats (use wt=javabin).
281
+ BinaryResponseParser for utilizing the binary format via SolrJ
282
+ and is now the default.
283
+ (Noble Paul, yonik)
284
+
285
+ 45. SOLR-521: StopFilterFactory support for "enablePositionIncrements"
286
+ (Walter Ferrara via hossman)
287
+
288
+ 46. SOLR-557: Added SolrCore.getSearchComponents() to return an unmodifiable Map. (gsingers)
289
+
290
+ 47. SOLR-516: Added hl.maxAlternateFieldLength parameter, to set max length for hl.alternateField
291
+ (Koji Sekiguchi via klaas)
292
+
293
+ 48. SOLR-319: Changed SynonymFilterFactory to "tokenize" synonyms file.
294
+ To use a tokenizer, specify "tokenizerFactory" attribute in <filter>.
295
+ For example:
296
+ <tokenizer class="solr.CJKTokenizerFactory"/>
297
+ <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" expand="true"
298
+ ignoreCase="true" tokenizerFactory="solr.CJKTokenizerFactory"/>
299
+ (koji)
300
+
301
+ 49. SOLR-515: Added SimilarityFactory capability to schema.xml,
302
+ making config file parameters usable in the construction of
303
+ the global Lucene Similarity implementation.
304
+ (ehatcher)
305
+
306
+ 50. SOLR-536: Add a DocumentObjectBinder to solrj that converts Objects to and
307
+ from SolrDocuments. (Noble Paul via ryan)
308
+
309
+ 51. SOLR-595: Add support for Field level boosting in the MoreLikeThis Handler. (Tom Morton, gsingers)
310
+
311
+ 52. SOLR-572: Added SpellCheckComponent and org.apache.solr.spelling package to support more spell checking functionality.
312
+ Also includes ability to add your own SolrSpellChecker implementation that plugs in.
313
+ See http://wiki.apache.org/solr/SpellCheckComponent for more details
314
+ (Shalin Shekhar Mangar, Bojan Smid, gsingers)
315
+ 53. SOLR-679: Added accessor methods to Lucene based spell checkers (gsingers)
316
+
317
+ 54. SOLR-423: Added Request Handler close hook notification so that RequestHandlers can be notified when a core is closing. (gsingers, ryan)
318
+
319
+ 55. SOLR-603: Added ability to partially optimize. (gsingers)
320
+
321
+ 56. SOLR-483: Add byte/short sorting support (gsingers)
322
+
323
+ 57. SOLR-14: Add preserveOriginal flag to WordDelimiterFilter
324
+ (Geoffrey Young, Trey Hyde, Ankur Madnani, yonik)
325
+
326
+ 58. SOLR-502: Add search timeout support. (Sean Timm via yonik)
327
+
328
+ 59. SOLR-605: Add the ability to register callbacks programatically (ryan, Noble Paul)
329
+
330
+ 60. SOLR-610: hl.maxAnalyzedChars can be -1 to highlight everything (Lars Kotthoff via klaas)
331
+
332
+ 61. SOLR-522: Make analysis.jsp show payloads. (Tricia Williams via yonik)
333
+
334
+ 62. SOLR-611: Expose sort_values returned by QueryComponent in SolrJ's QueryResponse (Dan Rosher via shalin)
335
+
336
+ 63. SOLR-256: Support exposing Solr statistics through JMX (Sharad Agrawal, shalin)
337
+
338
+ 64. SOLR-666: Expose warmup time in statistics for SolrIndexSearcher and LRUCache (shalin)
339
+
340
+ 65. SOLR-663: Allow multiple files for stopwords, keepwords, protwords and synonyms (Otis Gospodnetic, shalin)
341
+
342
+ 66. SOLR-469: Added DataImportHandler as a contrib project which makes indexing data from Databases, XML files and HTTP
343
+ data sources into Solr quick and easy. Includes API and implementations for supporting multiple
344
+ data sources, processors and transformers for importing data. Supports full data imports as well as
345
+ incremental (delta) indexing. See http://wiki.apache.org/solr/DataImportHandler for more details.
346
+ (Noble Paul, shalin)
347
+
348
+ 67. SOLR-622: SpellCheckComponent supports auto-loading indices on startup and optionally, (re)builds indices
349
+ on newSearcher event, if configured in solrconfig.xml
350
+ (shalin)
351
+
352
+ 68. SOLR-554: Hierarchical JDK log level selector for SOLR Admin replaces logging.jsp (Sean Timm via shalin)
353
+
354
+ 69. SOLR-506: Emitting HTTP Cache headers can be enabled or disabled through configuration
355
+ on a per-handler basis (shalin)
356
+
357
+ 70. SOLR-716: Added support for properties in configuration files. Properties can be specified in solr.xml
358
+ and can be used in solrconfig.xml and schema.xml
359
+ (Henri Biestro, hossman, ryan, shalin)
360
+
361
+ Changes in runtime behavior
362
+ 1. SOLR-559: use Lucene updateDocument, deleteDocuments methods. This
363
+ removes the maxBufferedDeletes parameter added by SOLR-310 as Lucene
364
+ now manages the deletes. This provides slightly better indexing
365
+ performance and makes overwrites atomic, eliminating the possibility of
366
+ a crash causing duplicates. (yonik)
367
+
368
+ 2. SOLR-689 / SOLR-695: If you have used "MultiCore" functionality in an unreleased
369
+ version of 1.3-dev, many classes and configs have been renamed for the official
370
+ 1.3 release. Speciffically, solr.xml has replaced multicore.xml, and uses a slightly
371
+ different syntax. The solrj classes: MultiCore{Request/Response/Params} have been
372
+ renamed: CoreAdmin{Request/Response/Params} (hossman, ryan, Henri Biestro)
373
+
374
+ 3. SOLR-647: reference count the SolrCore uses to prevent a premature
375
+ close while a core is still in use. (Henri Biestro, Noble Paul, yonik)
376
+
377
+ 4. SOLR-737: SolrQueryParser now uses a ConstantScoreQuery for wildcard
378
+ queries that prevent an exception from being thrown when the number
379
+ of matching terms exceeds the BooleanQuery clause limit. (yonik)
380
+
381
+ Optimizations
382
+ 1. SOLR-276: improve JSON writer speed. (yonik)
383
+
384
+ 2. SOLR-310: bound and reduce memory usage by providing <maxBufferedDeletes> parameter,
385
+ which flushes deleted without forcing the user to use <commit/> for this purpose.
386
+ (klaas)
387
+
388
+ 3. SOLR-348: short-circuit faceting if less than mincount docs match. (yonik)
389
+
390
+ 4. SOLR-354: Optimize removing all documents. Now when a delete by query
391
+ of *:* is issued, the current index is removed. (yonik)
392
+
393
+ 5. SOLR-377: Speed up response writers. (yonik)
394
+
395
+ 6. SOLR-342: Added support into the SolrIndexWriter for using several new
396
+ features of the new LuceneIndexWriter, including: setRAMBufferSizeMB(), setMergePolicy(), setMergeScheduler. Also, added support
397
+ to specify Lucene's autoCommit functionality (not to be confused with Solr's similarily named autoCommit functionality) via
398
+ the <luceneAutoCommit> config. item. See the test and example solrconfig.xml <indexDefaults> section for usage. Performance during
399
+ indexing should be significantly increased by moving up to 2.3 due to Lucene's new indexing capabilities. Furthermore,
400
+ the setRAMBufferSizeMB makes it more logical to decide on tuning factors related to indexing. For best performance, leave the
401
+ mergePolicy and mergeScheduler as the defaults and set ramBufferSizeMB instead of maxBufferedDocs. The best value for this
402
+ depends on the types of documents in use. 32 should be a good starting point, but reports have shown up to 48 MB provides
403
+ good results. Note, it is acceptable to set both ramBufferSizeMB and maxBufferedDocs, and Lucene will flush based on whichever
404
+ limit is reached first. (gsingers)
405
+
406
+ 7. SOLR-330: Converted TokenStreams to use Lucene's new char array based
407
+ capabilities. (gsingers)
408
+
409
+ 8. SOLR-624: Only take snapshots if there are differences to the index (Richard Trey Hyde via gsingers)
410
+
411
+ 9. SOLR-587: Delete by Query performance greatly improved by using
412
+ new underlying Lucene IndexWriter implementation. (yonik)
413
+
414
+ 10. SOLR-730: Use read-only IndexReaders that don't synchronize
415
+ isDeleted(). This will speed up function queries and *:* queries
416
+ as well as improve their scalability on multi-CPU systems.
417
+ (Mark Miller via yonik)
418
+
419
+ Bug Fixes
420
+ 1. Make TextField respect sortMissingFirst and sortMissingLast fields.
421
+ (J.J. Larrea via yonik)
422
+
423
+ 2. autoCommit/maxDocs was not working properly when large autoCommit/maxTime
424
+ was specified (klaas)
425
+
426
+ 3. SOLR-283: autoCommit was not working after delete. (ryan)
427
+
428
+ 4. SOLR-286: ContentStreamBase was not using default encoding for getBytes()
429
+ (Toru Matsuzawa via ryan)
430
+
431
+ 5. SOLR-292: Fix MoreLikeThis facet counting. (Pieter Berkel via ryan)
432
+
433
+ 6. SOLR-297: Fix bug in RequiredSolrParams where requiring a field
434
+ specific param would fail if a general default value had been supplied.
435
+ (hossman)
436
+
437
+ 7. SOLR-331: Fix WordDelimiterFilter handling of offsets for synonyms or
438
+ other injected tokens that can break highlighting. (yonik)
439
+
440
+ 8. SOLR-282: Snapshooter does not work on Solaris and OS X since the cp command
441
+ there does not have the -l option. Also updated commit/optimize related
442
+ scripts to handle both old and new response format. (bill)
443
+
444
+ 9. SOLR-294: Logging of elapsed time broken on Solaris because the date command
445
+ there does not support the %s output format. (bill)
446
+
447
+ 10. SOLR-136: Snappuller - "date -d" and locales don't mix. (Jürgen Hermann via bill)
448
+
449
+ 11. SOLR-333: Changed distributiondump.jsp to use Solr HOME instead of CWD to set path.
450
+
451
+ 12. SOLR-393: Removed duplicate contentType from raw-schema.jsp. (bill)
452
+
453
+ 13. SOLR-413: Requesting a large numbers of documents to be returned (limit)
454
+ can result in an out-of-memory exception, even for a small index. (yonik)
455
+
456
+ 14. The CSV loader incorrectly threw an exception when given
457
+ header=true (the default). (ryan, yonik)
458
+
459
+ 15. SOLR-449: the python and ruby response writers are now able to correctly
460
+ output NaN and Infinity in their respective languages. (klaas)
461
+
462
+ 16. SOLR-42: HTMLStripReader tokenizers now preserve correct source
463
+ offsets for highlighting. (Grant Ingersoll via yonik)
464
+
465
+ 17. SOLR-481: Handle UnknownHostException in _info.jsp (gsingers)
466
+
467
+ 18. SOLR-324: Add proper support for Long and Doubles in sorting, etc. (gsingers)
468
+
469
+ 19. SOLR-496: Cache-Control max-age changed to Long so Expires
470
+ calculation won't cause overflow. (Thomas Peuss via hossman)
471
+
472
+ 20. SOLR-535: Fixed typo (Tokenzied -> Tokenized) in schema.jsp (Thomas Peuss via billa)
473
+
474
+ 21. SOLR-529: Better error messages from SolrQueryParser when field isn't
475
+ specified and there is no defaultSearchField in schema.xml
476
+ (Lars Kotthoff via hossman)
477
+
478
+ 22. SOLR-530: Better error messages/warnings when parsing schema.xml:
479
+ field using bogus fieldtype and multiple copyFields to a non-multiValue
480
+ field. (Shalin Shekhar Mangar via hossman)
481
+
482
+ 23. SOLR-528: Better error message when defaultSearchField is bogus or not
483
+ indexed. (Lars Kotthoff via hossman)
484
+
485
+ 24. SOLR-533: Fixed tests so they don't use hardcoded port numbers.
486
+ (hossman)
487
+
488
+ 25. SOLR-400: SolrExceptionTest should now handle using OpenDNS as a DNS provider (gsingers)
489
+
490
+ 26. SOLR-541: Legacy XML update support (provided by SolrUpdateServlet
491
+ when no RequestHandler is mapped to "/update") now logs error correctly.
492
+ (hossman)
493
+
494
+ 27. SOLR-267: Changed logging to report number of hits, and also provide a mechanism to add log messages to be output by the SolrCore via a NamedList toLog
495
+ member variable. (Will Johnson, yseeley, gsingers)
496
+ SOLR-267: Removed adding values to the HTTP headers in SolrDispatchFilter (gsingers)
497
+
498
+ 28. SOLR-509: Moved firstSearcher event notification to the end of the SolrCore constructor (Koji Sekiguchi via gsingers)
499
+
500
+ 29. SOLR-470, SOLR-552, SOLR-544, SOLR-701: Multiple fixes to DateField
501
+ regarding lenient parsing of optional milliseconds, and correct
502
+ formating using the canonical representation. LegacyDateField has
503
+ been added for people who have come to depend on the existing
504
+ broken behavior. (hossman, Stefan Oestreicher)
505
+
506
+ 30. SOLR-539: Fix for non-atomic long counters and a cast fix to avoid divide
507
+ by zero. (Sean Timm via Otis Gospodnetic)
508
+
509
+ 31. SOLR-514: Added explicit media-type with UTF* charset to *.xsl files that
510
+ don't already have one. (hossman)
511
+
512
+ 32. SOLR-505: Give RequestHandlers the possiblity to suppress the generation
513
+ of HTTP caching headers. (Thomas Peuss via Otis Gospodnetic)
514
+
515
+ 33. SOLR-553: Handle highlighting of phrase terms better when
516
+ hl.usePhraseHighligher=true URL param is used.
517
+ (Bojan Smid via Otis Gospodnetic)
518
+
519
+ 34. SOLR-590: Limitation in pgrep on Linux platform breaks script-utils fixUser. (Hannes Schmidt via billa)
520
+
521
+ 35. SOLR-597: SolrServlet no longer "caches" SolrCore. This was causing
522
+ problems in Resin, and could potentially cause problems for customized
523
+ usages of SolrServlet.
524
+
525
+ 36. SOLR-585: Now sets the QParser on the ResponseBuilder (gsingers)
526
+
527
+ 37. SOLR-604: If the spellchecking path is relative, make it relative to the Solr Data Directory. (Shalin Shekhar Mangar via gsingers)
528
+
529
+ 38. SOLR-584: Make stats.jsp and stats.xsl more robust.
530
+ (Yousef Ourabi and hossman)
531
+
532
+ 39. SOLR-443: SolrJ: Declare UTF-8 charset on POSTed parameters
533
+ to avoid problems with servlet containers that default to latin-1
534
+ and allow switching of the exact POST mechanism for parameters
535
+ via useMultiPartPost in CommonsHttpSolrServer.
536
+ (Lars Kotthoff, Andrew Schurman, ryan, yonik)
537
+
538
+ 40. SOLR-556: multi-valued fields always highlighted in disparate snippets (Lars Kotthoff via klaas)
539
+
540
+ 41. SOLR-501: Fix admin/analysis.jsp UTF-8 input for some other servlet
541
+ containers such as Tomcat. (Hiroaki Kawai, Lars Kotthoff via yonik)
542
+
543
+ 42. SOLR-616: SpellChecker accuracy configuration is not applied for FileBasedSpellChecker.
544
+ Apply it for FileBasedSpellChecker and IndexBasedSpellChecker both.
545
+ (shalin)
546
+
547
+ 43. SOLR-648: SpellCheckComponent throws NullPointerException on using spellcheck.q request
548
+ parameter after restarting Solr, if reload is called but build is not called.
549
+ (Jonathan Lee, shalin)
550
+
551
+ 44. SOLR-598: DebugComponent now always occurs last in the SearchHandler list unless the components are explicitly declared. (gsingers)
552
+
553
+ 45. SOLR-676: DataImportHandler should use UpdateRequestProcessor API instead of directly using UpdateHandler. (shalin)
554
+
555
+ 46. SOLR-696: Fixed bug in NamedListCodec in regards to serializing Iterable objects. (gsingers)
556
+
557
+ 47. SOLR-669: snappuler fix for FreeBSD/Darwin (Richard "Trey" Hyde via Otis Gospodnetic)
558
+
559
+ 48. SOLR-606: Fixed spell check collation offset issue. (Stefan Oestreicher , Geoffrey Young, gsingers)
560
+
561
+ 49. SOLR-589: Improved handling of badly formated query strings (Sean Timm via Otis Gospodnetic)
562
+
563
+ 50. SOLR-749: Allow QParser and ValueSourceParsers to be extended with same name (hossman, gsingers)
564
+
565
+ Other Changes
566
+ 1. SOLR-135: Moved common classes to org.apache.solr.common and altered the
567
+ build scripts to make two jars: apache-solr-1.3.jar and
568
+ apache-solr-1.3-common.jar. This common.jar can be used in client code;
569
+ It does not have lucene or junit dependencies. The original classes
570
+ have been replaced with a @Deprecated extended class and are scheduled
571
+ to be removed in a later release. While this change does not affect API
572
+ compatibility, it is recommended to update references to these
573
+ deprecated classes. (ryan)
574
+
575
+ 2. SOLR-268: Tweaks to post.jar so it prints the error message from Solr.
576
+ (Brian Whitman via hossman)
577
+
578
+ 3. Upgraded to Lucene 2.2.0; June 18, 2007.
579
+
580
+ 4. SOLR-215: Static access to SolrCore.getSolrCore() and SolrConfig.config
581
+ have been deprecated in order to support multiple loaded cores.
582
+ (Henri Biestro via ryan)
583
+
584
+ 5. SOLR-367: The create method in all TokenFilter and Tokenizer Factories
585
+ provided by Solr now declare their specific return types instead of just
586
+ using "TokenStream" (hossman)
587
+
588
+ 6. SOLR-396: Hooks add to build system for automatic generation of (stub)
589
+ Tokenizer and TokenFilter Factories.
590
+ Also: new Factories for all Tokenizers and TokenFilters provided by the
591
+ lucene-analyzers-2.2.0.jar -- includes support for German, Chinese,
592
+ Russan, Dutch, Greek, Brazilian, Thai, and French. (hossman)
593
+
594
+ 7. Upgraded to commons-CSV r609327, which fixes escaping bugs and
595
+ introduces new escaping and whitespace handling options to
596
+ increase compatibility with different formats. (yonik)
597
+
598
+ 8. Upgraded to Lucene 2.3.0; Jan 23, 2008.
599
+
600
+ 9. SOLR-451: Changed analysis.jsp to use POST instead of GET, also made the input area a bit bigger (gsingers)
601
+
602
+ 10. Upgrade to Lucene 2.3.1
603
+
604
+ 11. SOLR-531: Different exit code for rsyncd-start and snappuller if disabled (Thomas Peuss via billa)
605
+
606
+ 12. SOLR-550: Clarified DocumentBuilder addField javadocs (gsingers)
607
+
608
+ 13. Upgrade to Lucene 2.3.2
609
+
610
+ 14. SOLR-518: Changed luke.xsl to use divs w/css for generating histograms
611
+ instead of SVG (Thomas Peuss via hossman)
612
+
613
+ 15. SOLR-592: Added ShardParams interface and changed several string literals
614
+ to references to constants in CommonParams.
615
+ (Lars Kotthoff via Otis Gospodnetic)
616
+
617
+ 16. SOLR-520: Deprecated unused LengthFilter since already core in
618
+ Lucene-Java (hossman)
619
+
620
+ 17. SOLR-645: Refactored SimpleFacetsTest (Lars Kotthoff via hossman)
621
+
622
+ 18. SOLR-591: Changed Solrj default value for facet.sort to true (Lars Kotthoff via Shalin)
623
+
624
+ 19. Upgraded to Lucene 2.4-dev (r669476) to support SOLR-572 (gsingers)
625
+
626
+ 20. SOLR-636: Improve/simplify example configs; and make index.jsp
627
+ links more resilient to configs loaded via an InputStream
628
+ (Lars Kotthoff, hossman)
629
+
630
+ 21. SOLR-682: Scripts now support FreeBSD (Richard Trey Hyde via gsingers)
631
+
632
+ 22. SOLR-489: Added in deprecation comments. (Sean Timm, Lars Kothoff via gsingers)
633
+
634
+ 23. SOLR-692: Migrated to stable released builds of StAX API 1.0.1 and StAX 1.2.0 (shalin)
635
+ 24. Upgraded to Lucene 2.4-dev (r686801) (yonik)
636
+ 25. Upgraded to Lucene 2.4-dev (r688745) 27-Aug-2008 (yonik)
637
+ 26. Upgraded to Lucene 2.4-dev (r691741) 03-Sep-2008 (yonik)
638
+ 27. Replaced the StAX reference implementation with the geronimo
639
+ StAX API jar, and the Woodstox StAX implementation. (yonik)
640
+
641
+ Build
642
+ 1. SOLR-411. Changed the names of the Solr JARs to use the defacto standard JAR names based on
643
+ project-name-version.jar. This yields, for example:
644
+ apache-solr-common-1.3-dev.jar
645
+ apache-solr-solrj-1.3-dev.jar
646
+ apache-solr-1.3-dev.jar
647
+
648
+ 2. SOLR-479: Added clover code coverage targets for committers and the nightly build. Requires the Clover library, as licensed to Apache and only available privately. To run:
649
+ ant -Drun.clover=true clean clover test generate-clover-reports
650
+
651
+ 3. SOLR-510: Nightly release includes client sources. (koji)
652
+
653
+ 4. SOLR-563: Modified the build process to build contrib projects
654
+ (Shalin Shekhar Mangar via Otis Gospodnetic)
655
+
656
+ 5. SOLR-673: Modify build file to create javadocs for core, solrj, contrib and "all inclusive" (shalin)
657
+
658
+ 6. SOLR-672: Nightly release includes contrib sources. (Jeremy Hinegardner, shalin)
659
+
660
+ 7. SOLR-586: Added ant target and POM files for building maven artifacts of the Solr core, common,
661
+ client and contrib. The target can publish artifacts with source and javadocs.
662
+ (Spencer Crissman, Craig McClanahan, shalin)
663
+
664
+ ================== Release 1.2, 20070602 ==================
665
+
666
+ Upgrading from Solr 1.1
667
+ -------------------------------------
668
+ IMPORTANT UPGRADE NOTE: In a master/slave configuration, all searchers/slaves
669
+ should be upgraded before the master! If the master were to be updated
670
+ first, the older searchers would not be able to read the new index format.
671
+
672
+ Older Apache Solr installations can be upgraded by replacing
673
+ the relevant war file with the new version. No changes to configuration
674
+ files should be needed.
675
+
676
+ This version of Solr contains a new version of Lucene implementing
677
+ an updated index format. This version of Solr/Lucene can still read
678
+ and update indexes in the older formats, and will convert them to the new
679
+ format on the first index change. One change in the new index format
680
+ is that all "norms" are kept in a single file, greatly reducing the number
681
+ of files per segment. Users of compound file indexes will want to consider
682
+ converting to the non-compound format for faster indexing and slightly better
683
+ search concurrency.
684
+
685
+ The JSON response format for facets has changed to make it easier for
686
+ clients to retain sorted order. Use json.nl=map explicitly in clients
687
+ to get the old behavior, or add it as a default to the request handler
688
+ in solrconfig.xml
689
+
690
+ The Lucene based Solr query syntax is slightly more strict.
691
+ A ':' in a field value must be escaped or the whole value must be quoted.
692
+
693
+ The Solr "Request Handler" framework has been updated in two key ways:
694
+ First, if a Request Handler is registered in solrconfig.xml with a name
695
+ starting with "/" then it can be accessed using path-based URL, instead of
696
+ using the legacy "/select?qt=name" URL structure. Second, the Request
697
+ Handler framework has been extended making it possible to write Request
698
+ Handlers that process streams of data for doing updates, and there is a
699
+ new-style Request Handler for XML updates given the name of "/update" in
700
+ the example solrconfig.xml. Existing installations without this "/update"
701
+ handler will continue to use the old update servlet and should see no
702
+ changes in behavior. For new-style update handlers, errors are now
703
+ reflected in the HTTP status code, Content-type checking is more strict,
704
+ and the response format has changed and is controllable via the wt
705
+ parameter.
706
+
707
+
708
+
709
+ Detailed Change List
710
+ --------------------
711
+
712
+ New Features
713
+ 1. SOLR-82: Default field values can be specified in the schema.xml.
714
+ (Ryan McKinley via hossman)
715
+
716
+ 2. SOLR-89: Two new TokenFilters with corresponding Factories...
717
+ * TrimFilter - Trims leading and trailing whitespace from Tokens
718
+ * PatternReplaceFilter - applies a Pattern to each token in the
719
+ stream, replacing match occurances with a specified replacement.
720
+ (hossman)
721
+
722
+ 3. SOLR-91: allow configuration of a limit of the number of searchers
723
+ that can be warming in the background. This can be used to avoid
724
+ out-of-memory errors, or contention caused by more and more searchers
725
+ warming in the background. An error is thrown if the limit specified
726
+ by maxWarmingSearchers in solrconfig.xml is exceeded. (yonik)
727
+
728
+ 4. SOLR-106: New faceting parameters that allow specification of a
729
+ minimum count for returned facets (facet.mincount), paging through facets
730
+ (facet.offset, facet.limit), and explicit sorting (facet.sort).
731
+ facet.zeros is now deprecated. (yonik)
732
+
733
+ 5. SOLR-80: Negative queries are now allowed everywhere. Negative queries
734
+ are generated and cached as their positive counterpart, speeding
735
+ generation and generally resulting in smaller sets to cache.
736
+ Set intersections in SolrIndexSearcher are more efficient,
737
+ starting with the smallest positive set, subtracting all negative
738
+ sets, then intersecting with all other positive sets. (yonik)
739
+
740
+ 6. SOLR-117: Limit a field faceting to constraints with a prefix specified
741
+ by facet.prefix or f.<field>.facet.prefix. (yonik)
742
+
743
+ 7. SOLR-107: JAVA API: Change NamedList to use Java5 generics
744
+ and implement Iterable<Map.Entry> (Ryan McKinley via yonik)
745
+
746
+ 8. SOLR-104: Support for "Update Plugins" -- RequestHandlers that want
747
+ access to streams of data for doing updates. ContentStreams can come
748
+ from the raw POST body, multi-part form data, or remote URLs.
749
+ Included in this change is a new SolrDispatchFilter that allows
750
+ RequestHandlers registered with names that begin with a "/" to be
751
+ accessed using a URL structure based on that name.
752
+ (Ryan McKinley via hossman)
753
+
754
+ 9. SOLR-126: DirectUpdateHandler2 supports autocommitting after a specified time
755
+ (in ms), using <autoCommit><maxTime>10000</maxTime></autoCommit>.
756
+ (Ryan McKinley via klaas).
757
+
758
+ 10. SOLR-116: IndexInfoRequestHandler added. (Erik Hatcher)
759
+
760
+ 11. SOLR-79: Add system property ${<sys.prop>[:<default>]} substitution for
761
+ configuration files loaded, including schema.xml and solrconfig.xml.
762
+ (Erik Hatcher with inspiration from Andrew Saar)
763
+
764
+ 12. SOLR-149: Changes to make Solr more easily embeddable, in addition
765
+ to logging which request handler handled each request.
766
+ (Ryan McKinley via yonik)
767
+
768
+ 13. SOLR-86: Added standalone Java-based command-line updater.
769
+ (Erik Hatcher via Bertrand Delecretaz)
770
+
771
+ 14. SOLR-152: DisMaxRequestHandler now supports configurable alternate
772
+ behavior when q is not specified. A "q.alt" param can be specified
773
+ using SolrQueryParser syntax as a mechanism for specifying what query
774
+ the dismax handler should execute if the main user query (q) is blank.
775
+ (Ryan McKinley via hossman)
776
+
777
+ 15. SOLR-158: new "qs" (Query Slop) param for DisMaxRequestHandler
778
+ allows for specifying the amount of default slop to use when parsing
779
+ explicit phrase queries from the user.
780
+ (Adam Hiatt via hossman)
781
+
782
+ 16. SOLR-81: SpellCheckerRequestHandler that uses the SpellChecker from
783
+ the Lucene contrib.
784
+ (Otis Gospodnetic and Adam Hiatt)
785
+
786
+ 17. SOLR-182: allow lazy loading of request handlers on first request.
787
+ (Ryan McKinley via yonik)
788
+
789
+ 18. SOLR-81: More SpellCheckerRequestHandler enhancements, inlcluding
790
+ support for relative or absolute directory path configurations, as
791
+ well as RAM based directory. (hossman)
792
+
793
+ 19. SOLR-197: New parameters for input: stream.contentType for specifying
794
+ or overriding the content type of input, and stream.file for reading
795
+ local files. (Ryan McKinley via yonik)
796
+
797
+ 20. SOLR-66: CSV data format for document additions and updates. (yonik)
798
+
799
+ 21. SOLR-184: add echoHandler=true to responseHeader, support echoParams=all
800
+ (Ryan McKinley via ehatcher)
801
+
802
+ 22. SOLR-211: Added a regex PatternTokenizerFactory. This extracts tokens
803
+ from the input string using a regex Pattern. (Ryan McKinley)
804
+
805
+ 23. SOLR-162: Added a "Luke" request handler and other admin helpers.
806
+ This exposes the system status through the standard requestHandler
807
+ framework. (ryan)
808
+
809
+ 24. SOLR-212: Added a DirectSolrConnection class. This lets you access
810
+ solr using the standard request/response formats, but does not require
811
+ an HTTP connection. It is designed for embedded applications. (ryan)
812
+
813
+ 25. SOLR-204: The request dispatcher (added in SOLR-104) can handle
814
+ calls to /select. This offers uniform error handling for /update and
815
+ /select. To enable this behavior, you must add:
816
+ <requestDispatcher handleSelect="true" > to your solrconfig.xml
817
+ See the example solrconfig.xml for details. (ryan)
818
+
819
+ 26. SOLR-170: StandardRequestHandler now supports a "sort" parameter.
820
+ Using the ';' syntax is still supported, but it is recommended to
821
+ transition to the new syntax. (ryan)
822
+
823
+ 27. SOLR-181: The index schema now supports "required" fields. Attempts
824
+ to add a document without a required field will fail, returning a
825
+ descriptive error message. By default, the uniqueKey field is
826
+ a required field. This can be disabled by setting required=false
827
+ in schema.xml. (Greg Ludington via ryan)
828
+
829
+ 28. SOLR-217: Fields configured in the schema to be neither indexed or
830
+ stored will now be quietly ignored by Solr when Documents are added.
831
+ The example schema has a comment explaining how this can be used to
832
+ ignore any "unknown" fields.
833
+ (Will Johnson via hossman)
834
+
835
+ 29. SOLR-227: If schema.xml defines multiple fieldTypes, fields, or
836
+ dynamicFields with the same name, a severe error will be logged rather
837
+ then quietly continuing. Depending on the <abortOnConfigurationError>
838
+ settings, this may halt the server. Likewise, if solrconfig.xml
839
+ defines multiple RequestHandlers with the same name it will also add
840
+ an error. (ryan)
841
+
842
+ 30. SOLR-226: Added support for dynamic field as the destination of a
843
+ copyField using glob (*) replacement. (ryan)
844
+
845
+ 31. SOLR-224: Adding a PhoneticFilterFactory that uses apache commons codec
846
+ language encoders to build phonetically similar tokens. This currently
847
+ supports: DoubleMetaphone, Metaphone, Soundex, and RefinedSoundex (ryan)
848
+
849
+ 32. SOLR-199: new n-gram tokenizers available via NGramTokenizerFactory
850
+ and EdgeNGramTokenizerFactory. (Adam Hiatt via yonik)
851
+
852
+ 33. SOLR-234: TrimFilter can update the Token's startOffset and endOffset
853
+ if updateOffsets="true". By default the Token offsets are unchanged.
854
+ (ryan)
855
+
856
+ 34. SOLR-208: new example_rss.xsl and example_atom.xsl to provide more
857
+ examples for people about the Solr XML response format and how they
858
+ can transform it to suit different needs.
859
+ (Brian Whitman via hossman)
860
+
861
+ 35. SOLR-249: Deprecated SolrException( int, ... ) constructors in favor
862
+ of constructors that takes an ErrorCode enum. This will ensure that
863
+ all SolrExceptions use a valid HTTP status code. (ryan)
864
+
865
+ 36. SOLR-386: Abstracted SolrHighlighter and moved existing implementation
866
+ to DefaultSolrHighlighter. Adjusted SolrCore and solrconfig.xml so
867
+ that highlighter is configurable via a class attribute. Allows users
868
+ to use their own highlighter implementation. (Tricia Williams via klaas)
869
+
870
+ Changes in runtime behavior
871
+ 1. Highlighting using DisMax will only pick up terms from the main
872
+ user query, not boost or filter queries (klaas).
873
+
874
+ 2. SOLR-125: Change default of json.nl to flat, change so that
875
+ json.nl only affects items where order matters (facet constraint
876
+ listings). Fix JSON output bug for null values. Internal JAVA API:
877
+ change most uses of NamedList to SimpleOrderedMap. (yonik)
878
+
879
+ 3. A new method "getSolrQueryParser" has been added to the IndexSchema
880
+ class for retrieving a new SolrQueryParser instance with all options
881
+ specified in the schema.xml's <solrQueryParser> block set. The
882
+ documentation for the SolrQueryParser constructor and it's use of
883
+ IndexSchema have also been clarified.
884
+ (Erik Hatcher and hossman)
885
+
886
+ 4. DisMaxRequestHandler's bq, bf, qf, and pf parameters can now accept
887
+ multiple values (klaas).
888
+
889
+ 5. Query are re-written before highlighting is performed. This enables
890
+ proper highlighting of prefix and wildcard queries (klaas).
891
+
892
+ 6. A meaningful exception is raised when attempting to add a doc missing
893
+ a unique id if it is declared in the schema and allowDups=false.
894
+ (ryan via klaas)
895
+
896
+ 7. SOLR-183: Exceptions with error code 400 are raised when
897
+ numeric argument parsing fails. RequiredSolrParams class added
898
+ to facilitate checking for parameters that must be present.
899
+ (Ryan McKinley, J.J. Larrea via yonik)
900
+
901
+ 8. SOLR-179: By default, solr will abort after any severe initalization
902
+ errors. This behavior can be disabled by setting:
903
+ <abortOnConfigurationError>false</abortOnConfigurationError>
904
+ in solrconfig.xml (ryan)
905
+
906
+ 9. The example solrconfig.xml maps /update to XmlUpdateRequestHandler using
907
+ the new request dispatcher (SOLR-104). This requires posted content to
908
+ have a valid contentType: curl -H 'Content-type:text/xml; charset=utf-8'
909
+ The response format matches that of /select and returns standard error
910
+ codes. To enable solr1.1 style /update, do not map "/update" to any
911
+ handler in solrconfig.xml (ryan)
912
+
913
+ 10. SOLR-231: If a charset is not specified in the contentType,
914
+ ContentStream.getReader() will use UTF-8 encoding. (ryan)
915
+
916
+ 11. SOLR-230: More options for post.jar to support stdin, xml on the
917
+ commandline, and defering commits. Tutorial modified to take
918
+ advantage of these options so there is no need for curl.
919
+ (hossman)
920
+
921
+ 12. SOLR-128: Upgraded Jetty to the latest stable release 6.1.3 (ryan)
922
+
923
+ Optimizations
924
+ 1. SOLR-114: HashDocSet specific implementations of union() and andNot()
925
+ for a 20x performance improvement for those set operations, and a new
926
+ hash algorithm speeds up exists() by 10% and intersectionSize() by 8%.
927
+ (yonik)
928
+
929
+ 2. SOLR-115: Solr now uses BooleanQuery.clauses() instead of
930
+ BooleanQuery.getClauses() in any situation where there is no risk of
931
+ modifying the original query.
932
+ (hossman)
933
+
934
+ 3. SOLR-221: Speed up sorted faceting on multivalued fields by ~60%
935
+ when the base set consists of a relatively large portion of the
936
+ index. (yonik)
937
+
938
+ 4. SOLR-221: Added a facet.enum.cache.minDf parameter which avoids
939
+ using the filterCache for terms that match few documents, trading
940
+ decreased memory usage for increased query time. (yonik)
941
+
942
+ Bug Fixes
943
+ 1. SOLR-87: Parsing of synonym files did not correctly handle escaped
944
+ whitespace such as \r\n\t\b\f. (yonik)
945
+
946
+ 2. SOLR-92: DOMUtils.getText (used when parsing config files) did not
947
+ work properly with many DOM implementations when dealing with
948
+ "Attributes". (Ryan McKinley via hossman)
949
+
950
+ 3. SOLR-9,SOLR-99: Tighten up sort specification error checking, throw
951
+ exceptions for missing sort specifications or a sort on a non-indexed
952
+ field. (Ryan McKinley via yonik)
953
+
954
+ 4. SOLR-145: Fix for bug introduced in SOLR-104 where some Exceptions
955
+ were being ignored by all "out of the box" RequestHandlers. (hossman)
956
+
957
+ 5. SOLR-166: JNDI solr.home code refactoring. SOLR-104 moved
958
+ some JNDI related code to the init method of a Servlet Filter -
959
+ according to the Servlet Spec, all Filter's should be initialized
960
+ prior to initializing any Servlets, but this is not the case in at
961
+ least one Servlet Container (Resin). This "bug fix" refactors
962
+ this JNDI code so that it should be executed the first time any
963
+ attempt is made to use the solr.home dir.
964
+ (Ryan McKinley via hossman)
965
+
966
+ 6. SOLR-173: Bug fix to SolrDispatchFilter to reduce "too many open
967
+ files" problem was that SolrDispatchFilter was not closing requests
968
+ when finished. Also modified ResponseWriters to only fetch a Searcher
969
+ reference if necessary for writing out DocLists.
970
+ (Ryan McKinley via hossman)
971
+
972
+ 7. SOLR-168: Fix display positioning of multiple tokens at the same
973
+ position in analysis.jsp (yonik)
974
+
975
+ 8. SOLR-167: The SynonymFilter sometimes generated incorrect offsets when
976
+ multi token synonyms were mached in the source text. (yonik)
977
+
978
+ 9. SOLR-188: bin scripts do not support non-default webapp names. Added "-U"
979
+ option to specify a full path to the update url, overriding the
980
+ "-h" (hostname), "-p" (port) and "-w" (webapp name) parameters.
981
+ (Jeff Rodenburg via billa)
982
+
983
+ 10. SOLR-198: RunExecutableListener always waited for the process to
984
+ finish, even when wait="false" was set. (Koji Sekiguchi via yonik)
985
+
986
+ 11. SOLR-207: Changed distribution scripts to remove recursive find
987
+ and avoid use of "find -maxdepth" on platforms where it is not
988
+ supported. (yonik)
989
+
990
+ 12. SOLR-222: Changing writeLockTimeout in solrconfig.xml did not
991
+ change the effective timeout. (Koji Sekiguchi via yonik)
992
+
993
+ 13. Changed the SOLR-104 RequestDispatcher so that /select?qt=xxx can not
994
+ access handlers that start with "/". This makes path based authentication
995
+ possible for path based request handlers. (ryan)
996
+
997
+ 14. SOLR-214: Some servlet containers (including Tomcat and Resin) do not
998
+ obey the specified charset. Rather then letting the the container handle
999
+ it solr now uses the charset from the header contentType to decode posted
1000
+ content. Using the contentType: "text/xml; charset=utf-8" will force
1001
+ utf-8 encoding. If you do not specify a contentType, it will use the
1002
+ platform default. (Koji Sekiguchi via ryan)
1003
+
1004
+ 15. SOLR-241: Undefined system properties used in configuration files now
1005
+ cause a clear message to be logged rather than an obscure exception thrown.
1006
+ (Koji Sekiguchi via ehatcher)
1007
+
1008
+ Other Changes
1009
+ 1. Updated to Lucene 2.1
1010
+
1011
+ 2. Updated to Lucene 2007-05-20_00-04-53
1012
+
1013
+ ================== Release 1.1.0, 20061222 ==================
1014
+
1015
+ Status
1016
+ ------
1017
+ This is the first release since Solr joined the Incubator, and brings many
1018
+ new features and performance optimizations including highlighting,
1019
+ faceted browsing, and JSON/Python/Ruby response formats.
1020
+
1021
+
1022
+ Upgrading from previous Solr versions
1023
+ -------------------------------------
1024
+ Older Apache Solr installations can be upgraded by replacing
1025
+ the relevant war file with the new version. No changes to configuration
1026
+ files are needed and the index format has not changed.
1027
+
1028
+ The default version of the Solr XML response syntax has been changed to 2.2.
1029
+ Behavior can be preserved for those clients not explicitly specifying a
1030
+ version by adding a default to the request handler in solrconfig.xml
1031
+
1032
+ By default, Solr will no longer use a searcher that has not fully warmed,
1033
+ and requests will block in the meantime. To change back to the previous
1034
+ behavior of using a cold searcher in the event there is no other
1035
+ warm searcher, see the useColdSearcher config item in solrconfig.xml
1036
+
1037
+ The XML response format when adding multiple documents to the collection
1038
+ in a single <add> command has changed to return a single <result>.
1039
+
1040
+
1041
+ Detailed Change List
1042
+ --------------------
1043
+
1044
+ New Features
1045
+ 1. added support for setting Lucene's positionIncrementGap
1046
+ 2. Admin: new statistics for SolrIndexSearcher
1047
+ 3. Admin: caches now show config params on stats page
1048
+ 3. max() function added to FunctionQuery suite
1049
+ 4. postOptimize hook, mirroring the functionallity of the postCommit hook,
1050
+ but only called on an index optimize.
1051
+ 5. Ability to HTTP POST query requests to /select in addition to HTTP-GET
1052
+ 6. The default search field may now be overridden by requests to the
1053
+ standard request handler using the df query parameter. (Erik Hatcher)
1054
+ 7. Added DisMaxRequestHandler and SolrPluginUtils. (Chris Hostetter)
1055
+ 8. Support for customizing the QueryResponseWriter per request
1056
+ (Mike Baranczak / SOLR-16 / hossman)
1057
+ 9. Added KeywordTokenizerFactory (hossman)
1058
+ 10. copyField accepts dynamicfield-like names as the source.
1059
+ (Darren Erik Vengroff via yonik, SOLR-21)
1060
+ 11. new DocSet.andNot(), DocSet.andNotSize() (yonik)
1061
+ 12. Ability to store term vectors for fields. (Mike Klaas via yonik, SOLR-23)
1062
+ 13. New abstract BufferedTokenStream for people who want to write
1063
+ Tokenizers or TokenFilters that require arbitrary buffering of the
1064
+ stream. (SOLR-11 / yonik, hossman)
1065
+ 14. New RemoveDuplicatesToken - useful in situations where
1066
+ synonyms, stemming, or word-deliminater-ing produce identical tokens at
1067
+ the same position. (SOLR-11 / yonik, hossman)
1068
+ 15. Added highlighting to SolrPluginUtils and implemented in StandardRequestHandler
1069
+ and DisMaxRequestHandler (SOLR-24 / Mike Klaas via hossman,yonik)
1070
+ 16. SnowballPorterFilterFactory language is configurable via the "language"
1071
+ attribute, with the default being "English". (Bertrand Delacretaz via yonik, SOLR-27)
1072
+ 17. ISOLatin1AccentFilterFactory, instantiates ISOLatin1AccentFilter to remove accents.
1073
+ (Bertrand Delacretaz via yonik, SOLR-28)
1074
+ 18. JSON, Python, Ruby QueryResponseWriters: use wt="json", "python" or "ruby"
1075
+ (yonik, SOLR-31)
1076
+ 19. Make web admin pages return UTF-8, change Content-type declaration to include a
1077
+ space between the mime-type and charset (Philip Jacob, SOLR-35)
1078
+ 20. Made query parser default operator configurable via schema.xml:
1079
+ <solrQueryParser defaultOperator="AND|OR"/>
1080
+ The default operator remains "OR".
1081
+ 21. JAVA API: new version of SolrIndexSearcher.getDocListAndSet() which takes
1082
+ flags (Greg Ludington via yonik, SOLR-39)
1083
+ 22. A HyphenatedWordsFilter, a text analysis filter used during indexing to rejoin
1084
+ words that were hyphenated and split by a newline. (Boris Vitez via yonik, SOLR-41)
1085
+ 23. Added a CompressableField base class which allows fields of derived types to
1086
+ be compressed using the compress=true setting. The field type also gains the
1087
+ ability to specify a size threshold at which field data is compressed.
1088
+ (klaas, SOLR-45)
1089
+ 24. Simple faceted search support for fields (enumerating terms)
1090
+ and arbitrary queries added to both StandardRequestHandler and
1091
+ DisMaxRequestHandler. (hossman, SOLR-44)
1092
+ 25. In addition to specifying default RequestHandler params in the
1093
+ solrconfig.xml, support has been added for configuring values to be
1094
+ appended to the multi-val request params, as well as for configuring
1095
+ invariant params that can not overridden in the query. (hossman, SOLR-46)
1096
+ 26. Default operator for query parsing can now be specified with q.op=AND|OR
1097
+ from the client request, overriding the schema value. (ehatcher)
1098
+ 27. New XSLTResponseWriter does server side XSLT processing of XML Response.
1099
+ In the process, an init(NamedList) method was added to QueryResponseWriter
1100
+ which works the same way as SolrRequestHandler.
1101
+ (Bertrand Delacretaz / SOLR-49 / hossman)
1102
+ 28. json.wrf parameter adds a wrapper-function around the JSON response,
1103
+ useful in AJAX with dynamic script tags for specifying a JavaScript
1104
+ callback function. (Bertrand Delacretaz via yonik, SOLR-56)
1105
+ 29. autoCommit can be specified every so many documents added (klaas, SOLR-65)
1106
+ 30. ${solr.home}/lib directory can now be used for specifying "plugin" jars
1107
+ (hossman, SOLR-68)
1108
+ 31. Support for "Date Math" relative "NOW" when specifying values of a
1109
+ DateField in a query -- or when adding a document.
1110
+ (hossman, SOLR-71)
1111
+ 32. useColdSearcher control in solrconfig.xml prevents the first searcher
1112
+ from being used before it's done warming. This can help prevent
1113
+ thrashing on startup when multiple requests hit a cold searcher.
1114
+ The default is "false", preventing use before warm. (yonik, SOLR-77)
1115
+
1116
+ Changes in runtime behavior
1117
+ 1. classes reorganized into different packages, package names changed to Apache
1118
+ 2. force read of document stored fields in QuerySenderListener
1119
+ 3. Solr now looks in ./solr/conf for config, ./solr/data for data
1120
+ configurable via solr.solr.home system property
1121
+ 4. Highlighter params changed to be prefixed with "hl."; allow fragmentsize
1122
+ customization and per-field overrides on many options
1123
+ (Andrew May via klaas, SOLR-37)
1124
+ 5. Default param values for DisMaxRequestHandler should now be specified
1125
+ using a '<lst name="defaults">...</lst>' init param, for backwards
1126
+ compatability all init prams will be used as defaults if an init param
1127
+ with that name does not exist. (hossman, SOLR-43)
1128
+ 6. The DisMaxRequestHandler now supports multiple occurances of the "fq"
1129
+ param. (hossman, SOLR-44)
1130
+ 7. FunctionQuery.explain now uses ComplexExplanation to provide more
1131
+ accurate score explanations when composed in a BooleanQuery.
1132
+ (hossman, SOLR-25)
1133
+ 8. Document update handling locking is much sparser, allowing performance gains
1134
+ through multiple threads. Large commits also might be faster (klaas, SOLR-65)
1135
+ 9. Lazy field loading can be enabled via a solrconfig directive. This will be faster when
1136
+ not all stored fields are needed from a document (klaas, SOLR-52)
1137
+ 10. Made admin JSPs return XML and transform them with new XSL stylesheets
1138
+ (Otis Gospodnetic, SOLR-58)
1139
+ 11. If the "echoParams=explicit" request parameter is set, request parameters are copied
1140
+ to the output. In an XML output, they appear in new <lst name="params"> list inside
1141
+ the new <lst name="responseHeader"> element, which replaces the old <responseHeader>.
1142
+ Adding a version=2.1 parameter to the request produces the old format, for backwards
1143
+ compatibility (bdelacretaz and yonik, SOLR-59).
1144
+
1145
+ Optimizations
1146
+ 1. getDocListAndSet can now generate both a DocList and a DocSet from a
1147
+ single lucene query.
1148
+ 2. BitDocSet.intersectionSize(HashDocSet) no longer generates an intermediate
1149
+ set
1150
+ 3. OpenBitSet completed, replaces BitSet as the implementation for BitDocSet.
1151
+ Iteration is faster, and BitDocSet.intersectionSize(BitDocSet) and unionSize
1152
+ is between 3 and 4 times faster. (yonik, SOLR-15)
1153
+ 4. much faster unionSize when one of the sets is a HashDocSet: O(smaller_set_size)
1154
+ 5. Optimized getDocSet() for term queries resulting in a 36% speedup of facet.field
1155
+ queries where DocSets aren't cached (for example, if the number of terms in the field
1156
+ is larger than the filter cache.) (yonik)
1157
+ 6. Optimized facet.field faceting by as much as 500 times when the field has
1158
+ a single token per document (not multiValued & not tokenized) by using the
1159
+ Lucene FieldCache entry for that field to tally term counts. The first request
1160
+ utilizing the FieldCache will take longer than subsequent ones.
1161
+
1162
+ Bug Fixes
1163
+ 1. Fixed delete-by-id for field types who's indexed form is different
1164
+ from the printable form (mainly sortable numeric types).
1165
+ 2. Added escaping of attribute values in the XML response (Erik Hatcher)
1166
+ 3. Added empty extractTerms() to FunctionQuery to enable use in
1167
+ a MultiSearcher (Yonik)
1168
+ 4. WordDelimiterFilter sometimes lost token positionIncrement information
1169
+ 5. Fix reverse sorting for fields were sortMissingFirst=true
1170
+ (Rob Staveley, yonik)
1171
+ 6. Worked around a Jetty bug that caused invalid XML responses for fields
1172
+ containing non ASCII chars. (Bertrand Delacretaz via yonik, SOLR-32)
1173
+ 7. WordDelimiterFilter can throw exceptions if configured with both
1174
+ generate and catenate off. (Mike Klaas via yonik, SOLR-34)
1175
+ 8. Escape '>' in XML output (because ]]> is illegal in CharData)
1176
+ 9. field boosts weren't being applied and doc boosts were being applied to fields (klaas)
1177
+ 10. Multiple-doc update generates well-formed xml (klaas, SOLR-65)
1178
+ 11. Better parsing of pingQuery from solrconfig.xml (hossman, SOLR-70)
1179
+ 12. Fixed bug with "Distribution" page introduced when Versions were
1180
+ added to "Info" page (hossman)
1181
+ 13. Fixed HTML escaping issues with user input to analysis.jsp and action.jsp
1182
+ (hossman, SOLR-74)
1183
+
1184
+ Other Changes
1185
+ 1. Upgrade to Lucene 2.0 nightly build 2006-06-22, lucene SVN revision 416224,
1186
+ http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?view=markup&pathrev=416224
1187
+ 2. Modified admin styles to improve display in Internet Explorer (Greg Ludington via billa, SOLR-6)
1188
+ 3. Upgrade to Lucene 2.0 nightly build 2006-07-15, lucene SVN revision 422302,
1189
+ 4. Included unique key field name/value (if available) in log message of add (billa, SOLR-18)
1190
+ 5. Updated to Lucene 2.0 nightly build 2006-09-07, SVN revision 462111
1191
+ 6. Added javascript to catch empty query in admin query forms (Tomislav Nakic-Alfirevic via billa, SOLR-48
1192
+ 7. blackslash escape * in ssh command used in snappuller for zsh compatibility, SOLR-63
1193
+ 8. check solr return code in admin scripts, SOLR-62
1194
+ 9. Updated to Lucene 2.0 nightly build 2006-11-15, SVN revision 475069
1195
+ 10. Removed src/apps containing the legacy "SolrTest" app (hossman, SOLR-3)
1196
+ 11. Simplified index.jsp and form.jsp, primarily by removing/hiding XML
1197
+ specific params, and adding an option to pick the output type. (hossman)
1198
+ 12. Added new numeric build property "specversion" to allow clean
1199
+ MANIFEST.MF files (hossman)
1200
+ 13. Added Solr/Lucene versions to "Info" page (hossman)
1201
+ 14. Explicitly set mime-type of .xsl files in web.xml to
1202
+ application/xslt+xml (hossman)
1203
+ 15. Config parsing should now work useing DOM Level 2 parsers -- Solr
1204
+ previously relied on getTextContent which is a DOM Level 3 addition
1205
+ (Alexander Saar via hossman, SOLR-78)
1206
+
1207
+ 2006/01/17 Solr open sourced, moves to Apache Incubator