source: sandbox/expresso-solr/solr/CHANGES.txt @ 7588

Revision 7588, 193.1 KB checked in by adir, 11 years ago (diff)

Ticket #000 - Adicionando a integracao de buscas com Solr na base a ser isnerida na comunidade

Line 
1                      Apache Solr Release Notes
2
3Introduction
4------------
5Apache Solr is an open source enterprise search server based on the Apache Lucene Java
6search library, with XML/HTTP and JSON APIs, hit highlighting, faceted search,
7caching, replication, and a web administration interface. It runs in a Java
8servlet container such as Tomcat.
9
10See http://lucene.apache.org/solr for more information.
11
12
13Getting Started
14---------------
15You need a Java 1.6 VM or later installed.
16In this release, there is an example Solr server including a bundled
17servlet container in the directory named "example".
18See the tutorial at http://lucene.apache.org/solr/tutorial.html
19
20
21$Id: CHANGES.txt 1352798 2012-06-22 08:24:10Z tommaso $
22
23==================  4.0.0-ALPHA ==================
24More information about this release, including any errata related to the
25release notes, upgrade instructions, or other changes may be found online at:
26   https://wiki.apache.org/solr/Solr4.0
27
28
29Versions of Major Components
30---------------------
31Apache Tika 1.1
32Carrot2 3.5.0
33Velocity 1.6.4 and Velocity Tools 2.0
34Apache UIMA 2.3.1
35Apache ZooKeeper 3.3.4
36
37
38Upgrading from Solr 3.6-dev
39----------------------
40
41* The Lucene index format has changed and as a result, once you upgrade,
42  previous versions of Solr will no longer be able to read your indices.
43  In a master/slave configuration, all searchers/slaves should be upgraded
44  before the master.  If the master were to be updated first, the older
45  searchers would not be able to read the new index format.
46
47* Setting abortOnConfigurationError=false is no longer supported
48  (since it has never worked properly).  Solr will now warn you if
49  you attempt to set this configuration option at all. (see SOLR-1846)
50
51* The default logic for the 'mm' param of the 'dismax' QParser has
52  been changed.  If no 'mm' param is specified (either in the query,
53  or as a default in solrconfig.xml) then the effective value of the
54  'q.op' param (either in the query or as a default in solrconfig.xml
55  or from the 'defaultOperator' option in schema.xml) is used to
56  influence the behavior.  If q.op is effectively "AND" then mm=100%.
57  If q.op is effectively "OR" then mm=0%.  Users who wish to force the
58  legacy behavior should set a default value for the 'mm' param in
59  their solrconfig.xml file.
60 
61* The VelocityResponseWriter is no longer built into the core.  Its JAR and
62  dependencies now need to be added (via <lib> or solr/home lib inclusion),
63  and it needs to be registered in solrconfig.xml like this:
64    <queryResponseWriter name="velocity" class="solr.VelocityResponseWriter"/>
65
66* The update request parameter to choose Update Request Processor Chain is
67  renamed from "update.processor" to "update.chain". The old parameter was
68  deprecated but still working since Solr3.2, but is now removed
69  entirely.
70
71* The <indexDefaults> and <mainIndex> sections of solrconfig.xml are discontinued
72  and replaced with the <indexConfig> section. There are also better defaults.
73  When migrating, if you don't know what your old settings mean, simply delete
74  both <indexDefaults> and <mainIndex> sections. If you have customizations,
75  put them in <indexConfig> section - with same syntax as before.
76
77* Two of the SolrServer subclasses in SolrJ were renamed/replaced.
78  CommonsHttpSolrServer is now HttpSolrServer, and
79  StreamingUpdateSolrServer is now ConcurrentUpdateSolrServer.
80
81* The PingRequestHandler no longer looks for a <healthcheck/> option in the
82  (legacy) <admin> section of solrconfig.xml.  Users who wish to take
83  advantage of this feature should configure a "healthcheckFile" init param
84  directly on the  PingRequestHandler.  As part of this change, relative file
85  paths have been fixed to be resolved against the data dir.  See the example
86  solrconfig.xml and SOLR-1258 for more details.
87
88* Due to low level changes to support SolrCloud, the uniqueKey field can no
89  longer be populated via <copyField/> or <field default=...> in the
90  schema.xml.  Users wishing to have Solr automaticly generate a uniqueKey
91  value when adding documents should instead use an instance of
92  solr.UUIDUpdateProcessorFactory in their update processor chain.  See
93  SOLR-2796 for more details.
94
95
96Detailed Change List
97----------------------
98
99New Features
100----------------------
101
102* SOLR-3272: Solr filter factory for MorfologikFilter (Polish lemmatisation).
103  (Rafał Kuć via Dawid Weiss, Steven Rowe, Uwe Schindler).
104
105* SOLR-571: The autowarmCount for LRUCaches (LRUCache and FastLRUCache) now
106  supports "percentages" which get evaluated  relative the current size of
107  the cache when warming happens.
108  (Tomas Fernandez Lobbe and hossman)
109
110* SOLR-1932: New relevancy function queries: termfreq, tf, docfreq, idf
111  norm, maxdoc, numdocs. (yonik)
112
113* SOLR-1665: Add debug component options for timings, results and query info only (gsingers, hossman, yonik)
114
115* SOLR-2112: Solrj API now supports streaming results. (ryan)
116
117* SOLR-792: Adding PivotFacetComponent for Hierarchical faceting
118  (ehatcher, Jeremy Hinegardner, Thibaut Lassalle, ryan)
119
120* LUCENE-2507, SOLR-2571, SOLR-2576: Added DirectSolrSpellChecker, which uses Lucene's
121  DirectSpellChecker to retrieve correction candidates directly from the term dictionary using
122  levenshtein automata.  (James Dyer, rmuir)
123   
124* SOLR-1873, SOLR-2358: SolrCloud - added shared/central config and core/shard management via zookeeper,
125  built-in load balancing, and distributed indexing.
126  (Jamie Johnson, Sami Siren, Ted Dunning, yonik, Mark Miller)
127  Additional Work:
128  SOLR-2324: SolrCloud solr.xml parameters are not persisted by CoreContainer.
129  (Massimo Schiavon, Mark Miller)
130  SOLR-2287: Allow users to query by multiple, compatible collections with SolrCloud.
131  (Soheb Mahmood, Alex Cowell, Mark Miller)
132  SOLR-2622: ShowFileRequestHandler does not work in SolrCloud mode.
133  (Stefan Matheis, Mark Miller)
134  SOLR-3108: Error in SolrCloud's replica lookup code when replica's are hosted in same Solr instance.
135  (Bruno Dumon, Sami Siren, Mark Miller)
136  SOLR-3080: Remove shard info from zookeeper when SolrCore is explicitly unloaded.
137  (yonik, Mark Miller, siren)
138  SOLR-3437: Recovery issues a spurious commit to the cluster. (Trym R. MÞller via Mark Miller)
139  SOLR-2822: Skip update processors already run on other nodes (hossman)
140
141* SOLR-1566: Transforming documents in the ResponseWriters.  This will allow
142  for more complex results in responses and open the door for function queries
143  as results.
144  (ryan with patches from grant, noble, cmale, yonik, Jan HÞydahl,
145  Arul Kalaipandian, Luca Cavanna, hossman)
146  SOLR-2037: Thanks to SOLR-1566, documents boosted by the QueryElevationComponent
147  can be marked as boosted.  (gsingers, ryan, yonik)
148
149* SOLR-2396: Add CollationField, which is much more efficient than
150  the Solr 3.x CollationKeyFilterFactory, and also supports
151  Locale-sensitive range queries. (rmuir)
152
153* SOLR-2338: Add support for using <similarity/> in a schema's fieldType,
154  for customizing scoring on a per-field basis. (hossman, yonik, rmuir)
155 
156* SOLR-2335: New 'field("...")' function syntax for referring to complex
157  field names (containing whitespace or special characters) in functions.
158
159* SOLR-2383: /browse improvements: generalize range and date facet display
160  (Jan HÞydahl via yonik)
161
162* SOLR-2272: Pseudo-join queries / filters.  Examples:
163  To restrict to the set of parents with at least one blue-eyed child:
164    fq={!join from=parent to=name}eyes:blue
165  To restrict to the set of children with at least one blue-eyed parent:
166    fq={!join from=name to=parent}eyes:blue
167  (yonik)
168
169* SOLR-1942: Added the ability to select postings format per fieldType in schema.xml
170  as well as support custom Codecs in solrconfig.xml.
171  (simonw via rmuir)
172
173* SOLR-2136: Boolean type added to function queries, along with
174  new functions exists(), if(), and(), or(), xor(), not(), def(),
175  and true and false constants. (yonik)
176
177* SOLR-2491: Add support for using spellcheck collation in conjunction
178  with grouping. Note that the number of hits returned for collations
179  is the number of ungrouped hits.  (James Dyer via rmuir)
180 
181* SOLR-1298: Return FunctionQuery as pseudo field.  The solr 'fl' param
182  now supports functions.  For example:  fl=id,sum(x,y) -- NOTE: only
183  functions with fast random access are reccomended. (yonik, ryan)
184 
185* SOLR-705: Optionally return shard info with each document in distributed
186  search.  Use fl=id,[shard]  to return the shard url.  (ryan) 
187
188* SOLR-2417: Add explain info directly to return documents using
189  ?fl=id,[explain] (ryan)
190
191* SOLR-2533: Converted ValueSource.ValueSourceSortField over to new rewriteable Lucene
192  SortFields.  ValueSourceSortField instances must be rewritten before they can be used.
193  This is done by SolrIndexSearcher when necessary. (Chris Male).
194
195* SOLR-2193, SOLR-2565: You may now specify a 'soft' commit when committing. This will
196  use Lucene's NRT feature to avoid guaranteeing documents are on stable storage in exchange
197  for faster reopen times. There is also a new 'soft' autocommit tracker that can be
198  configured. (Mark Miller, Robert Muir)
199
200* SOLR-2399: Updated Solr Admin interface.  New look and feel with per core administration
201  and many new options.  (Stefan Matheis via ryan)
202
203* SOLR-1032: CSV handler now supports "literal.field_name=value" parameters.
204  (Simon Rosenthal, ehatcher)
205
206* SOLR-2656: realtime-get, efficiently retrieves the latest stored fields for specified
207  documents, even if they are not yet searchable (i.e. without reopening a searcher)
208  (yonik)
209 
210* SOLR-2703: Added support for Lucene's "surround" query parser. (Simon Rosenthal, ehatcher)
211
212* SOLR-2754: Added factories for several ranking algorithms:
213    BM25SimilarityFactory: Okapi BM25
214    DFRSimilarityFactory: Divergence from Randomness models
215    IBSimilarityFactory: Information-based models
216    LMDirichletSimilarity: LM with Dirichlet smoothing
217    LMJelinekMercerSimilarity: LM with Jelinek-Mercer smoothing
218 (David Mark Nemeskey, Robert Muir)
219 
220* SOLR-2134 Trie* fields should support sortMissingLast=true, and deprecate Sortable* Field Types
221  (Ryan McKinley, Mike McCandless, Uwe Schindler, Erick Erickson)
222   
223* SOLR-2438 added MultiTermAwareComponent to the various classes to allow automatic lowercasing
224  for multiterm queries (wildcards, regex, prefix, range, etc). You can now optionally specify a
225  "multiterm" analyzer in our schema.xml, but Solr should "do the right thing" if you don't
226  specify <analyzer type="multiterm"> (Pete Sturge Erick Erickson, Mentoring from Seeley and Muir)
227
228* SOLR-2481: Add support for commitWithin in DataImportHandler (Sami Siren via yonik)
229
230* SOLR-2992: Add support for IndexWriter.prepareCommit() via prepareCommit=true
231  on update URLs. (yonik)
232
233* SOLR-2906: Added LFU cache options to Solr. (Shawn Heisey via Erick Erickson)
234
235* SOLR-3069: Ability to add openSearcher=false to not open a searcher when doing
236  a hard commit.  commitWithin now only invokes a softCommit. (yonik)
237
238* SOLR-2802: New FieldMutatingUpdateProcessor and Factory to simplify the
239  development of UpdateProcessors that modify field values of documents as
240  they are indexed. Also includes several useful new implementations:
241      RemoveBlankFieldUpdateProcessorFactory
242      TrimFieldUpdateProcessorFactory
243      HTMLStripFieldUpdateProcessorFactory
244      RegexReplaceProcessorFactory
245      FieldLengthUpdateProcessorFactory
246      ConcatFieldUpdateProcessorFactory
247      FirstFieldValueUpdateProcessorFactory
248      LastFieldValueUpdateProcessorFactory
249      MinFieldValueUpdateProcessorFactory
250      MaxFieldValueUpdateProcessorFactory
251      TruncateFieldUpdateProcessorFactory
252      IgnoreFieldUpdateProcessorFactory
253  (hossman, janhoy)
254
255* SOLR-3120: Optional post filtering for spatial queries bbox and geofilt
256  for LatLonType. (yonik)
257
258* SOLR-2459: Expose LogLevel selection with a RequestHandler rather then servlet
259  (Stefan Matheis, Upayavira, ryan)
260
261* SOLR-3134: Include shard info in distributed response when shards.info=true
262  (Russell Black, ryan)
263
264* SOLR-2898: Support grouped faceting. (Martijn van Groningen)
265  Additional Work:
266  SOLR-3406: Extended grouped faceting support to facet.query and facet.range parameters.
267             (David Boychuck, Martijn van Groningen)
268
269* SOLR-2949: QueryElevationComponent is now supported with distributed search.
270  (Mark Miller, yonik)
271
272* SOLR-3221: Added the ability to directly configure aspects of the concurrency
273 and thread-pooling used within distributed search in solr. This allows for finer
274 grained controlled and can be tuned by end users to target their own specific
275 requirements. This builds on the work of the HttpCommComponent and uses the same configuration
276 block to configure the thread pool. The default configuration has
277 the same behaviour as solr 3.5, favouring throughput over latency. More
278 information can be found on the wiki (http://wiki.apache.org/solr/SolrConfigXml) (Greg Bowyer)
279
280* SOLR-3278: Negative boost support to the Extended Dismax Query Parser Boost Query (bq).
281  (James Dyer)
282
283* SOLR-3255: OpenExchangeRates.Org Exchange Rate Provider for CurrencyField (janhoy)
284
285* SOLR-3358: Logging events are captured and available from the /admin/logging
286  request handler. (ryan)
287 
288* SOLR-1535: PreAnalyzedField type provides a functionality to index (and optionally store)
289  field content that was already processed and split into tokens using some external processing
290  chain. Serialization format is pluggable, and defaults to JSON. (ab)
291
292* SOLR-3363: Consolidated Exceptions in Analysis Factories so they only throw
293  InitalizationExceptions (Chris Male)
294
295* SOLR-2690: New support for a "TZ" request param which overrides the TimeZone
296  used when rounding Dates in DateMath expressions for the entire request
297  (all date range queries and date faceting is affected).  The default TZ
298  is still UTC.  (David Schlotfeldt, hossman)
299
300* SOLR-3402: Analysis Factories are now configured with their Lucene Version
301  throw setLuceneMatchVersion, rather than through the Map passed to init.
302  Parsing and simple error checking for the Version is now done inside
303  the code that creates the Analysis Factories. (Chris Male)
304
305* SOLR-3178: Optimistic locking.  If a _version_ is provided with an update
306  that does not match the version in the index, an HTTP 409 error (Conflict)
307  will result.  (Per Steffensen, yonik)
308
309* SOLR-139: Updateable documents.  JSON Example:
310  {"id":"mydoc", "f1":{"set":10}, "f2":{"add":20}}  will result in field "f1"
311  being set to 10, "f2" having an additional value of 20 added, and all
312  other existing fields unchanged.  All source fields must be stored for
313  this feature to work correctly.  (Ryan McKinley, Erik Hatcher, yonik)
314
315* SOLR-2857: Support XML,CSV,JSON, and javabin in a single RequestHandler and
316  choose the correct ContentStreamLoader based on Content-Type header.  This
317  also deprecates the existing [Xml,JSON,CSV,Binary,Xslt]UpdateRequestHandler.
318  (ryan)
319 
320* SOLR-2585: Context-Sensitive Spelling Suggestions & Collations.  This adds support
321  for the "spellcheck.alternativeTermCount" & "spellcheck.maxResultsForSuggest"
322  parameters, letting users receive suggestions even when all the queried terms
323  exist in the dictionary.  This differs from "spellcheck.onlyMorePopular" in
324  that the suggestions need not consist entirely of terms with a greater document
325  frequency than the queried terms. (James Dyer)
326
327* SOLR-2058: Edismax query parser to allow "phrase slop" to be specified per-field
328  on the pf/pf2/pf3 parameters using optional "FieldName~slop^boost" syntax.  The
329  prior "FieldName^boost" syntax is still accepted.  In such cases the value on the
330  "ps" parameter serves as the default slop.  (Ron Mayer via James Dyer)
331
332* SOLR-3495: New UpdateProcessors have been added to create default values for
333  configured fields.  These works similarly to the <field default="..."/>
334  option in schema.xml, but are applied in the UpdateProcessorChain, so they
335  may be used prior to other UpdateProcessors, or to generate a uniqueKey field
336  value when using the DistributedUpdateProcessor (ie: SolrCloud)
337    TimestampUpdateProcessorFactory
338    UUIDUpdateProcessorFactory
339    DefaultValueUpdateProcessorFactory
340  (hossman)
341 
342* SOLR-2993: Add WordBreakSolrSpellChecker to offer suggestions by combining adjacent
343  query terms and/or breaking terms into multiple words.  This spellchecker can be
344  configured with a traditional checker (ie: DirectSolrSpellChecker).  The results
345  are combined and collations can contain a mix of corrections from both spellcheckers. 
346  (James Dyer)
347
348* SOLR-3508: Simplify JSON update format for deletes as well as allow
349  version specification for optimistic locking.  Examples:
350    {"delete":"myid"}
351    {"delete":["id1","id2","id3"]}
352    {"delete":{"id":"myid", "_version_":123456789}}
353  (yonik)
354
355* SOLR-3211:  Allow parameter overrides in conjunction with "spellcheck.maxCollationTries".
356  To do so, use parameters starting with "spellcheck.collateParam."  For instance, to
357  override the "mm" parameter, specify "spellcheck.collateParam.mm".  This is helpful
358  in cases where testing spellcheck collations for result counts should use different
359  parameters from the main query (James Dyer)
360
361* SOLR-2599: CloneFieldUpdateProcessorFactory provides similar functionality
362  to schema.xml's <copyField/> declaration but as an update processor that can
363  be combined with other processors in any order. (Jan HÞydahl & hossman)
364
365* SOLR-3351: eDismax: ps2 and ps3 params (janhoy)
366
367* SOLR-3542: Add WeightedFragListBuilder for FVH and set it to default fragListBuilder
368  in example solrconfig.xml. (Sebastian Lutze, koji)
369
370Optimizations
371----------------------
372
373* SOLR-1875: Per-segment field faceting for single valued string fields.
374  Enable with facet.method=fcs, control the number of threads used with
375  the "threads" local param on the facet.field param.  This algorithm will
376  only be faster in the presence of rapid index changes.  (yonik)
377
378* SOLR-1904: When facet.enum.cache.minDf > 0 and the base doc set is a
379  SortedIntSet, convert to HashDocSet for better performance. (yonik)
380
381* SOLR-2092: Speed up single-valued and multi-valued "fc" faceting. Typical
382  improvement is 5%, but can be much greater (up to 10x faster) when facet.offset
383  is very large (deep paging). (yonik)
384 
385* SOLR-2193, SOLR-2565: The default Solr update handler has been improved so
386  that it uses fewer locks, keeps the IndexWriter open rather than closing it
387  on each commit (ie commits no longer wait for background merges to complete),
388  works with SolrCore to provide faster 'soft' commits, and has an improved API
389  that requires less instanceof special casing. (Mark Miller, Robert Muir)
390  Additional Work:
391  SOLR-2697: commit and autocommit operations don't reset
392  DirectUpdateHandler2.numDocsPending stats attribute.
393  (Alexey Serba, Mark Miller)
394
395* SOLR-2950: The QueryElevationComponent now avoids using the FieldCache and looking up
396  every document id (gsingers, yonik)
397
398Bug Fixes
399----------------------
400* SOLR-3139: Make ConcurrentUpdateSolrServer send UpdateRequest.getParams()
401  as HTTP request params (siren)
402
403* SOLR-3165: Cannot use DIH in Solrcloud + Zookeeper (Alexey Serba,
404  Mark Miller, siren)
405
406* SOLR-3068: Occasional NPE in ThreadDumpHandler (siren)
407
408* SOLR-2762: FSTLookup could return duplicate results or one results less
409  than requested. (David Smiley, Dawid Weiss)
410
411* SOLR-2741: Bugs in facet range display in trunk (janhoy)
412
413* SOLR-1908: Fixed SignatureUpdateProcessor to fail to initialize on
414  invalid config.  Specifically: a signatureField that does not exist,
415  or overwriteDupes=true with a signatureField that is not indexed.
416  (hossman)
417
418* SOLR-1824: IndexSchema will now fail to initialize if there is a
419  problem initializing one of the fields or field types. (hossman)
420
421* SOLR-1928: TermsComponent didn't correctly break ties for non-text
422  fields sorted by count. (yonik)
423
424* SOLR-2107: MoreLikeThisHandler doesn't work with alternate qparsers. (yonik)
425
426* SOLR-2108: Fixed false positives when using wildcard queries on fields with reversed
427  wildcard support. For example, a query of *zemog* would match documents that contain
428  'gomez'.  (Landon Kuhn via Robert Muir)
429
430* SOLR-1962: SolrCore#initIndex should not use a mix of indexPath and newIndexPath (Mark Miller)
431
432* SOLR-2275: fix DisMax 'mm' parsing to be tolerant of whitespace
433  (Erick Erickson via hossman)
434 
435* SOLR-2193, SOLR-2565, SOLR-2651: SolrCores now properly share IndexWriters across SolrCore reloads.
436  (Mark Miller, Robert Muir)
437  Additional Work:
438  SOLR-2705: On reload, IndexWriterProvider holds onto the initial SolrCore it was created with.
439  (Yury Kats, Mark Miller)
440
441* SOLR-2682: Remove addException() in SimpleFacet. FacetComponent no longer catches and embeds
442  exceptions occurred during facet processing, it throws HTTP 400 or 500 exceptions instead. (koji)
443
444* SOLR-2654: Directorys used by a SolrCore are now closed when they are no longer used.
445  (Mark Miller)
446 
447* SOLR-2854: Now load URL content stream data (via stream.url) when called for during request handling,
448  rather than loading URL content streams automatically regardless of use.
449  (David Smiley and Ryan McKinley via ehatcher)
450 
451* SOLR-2829: Fix problem with false-positives due to incorrect
452  equals methods. (Yonik Seeley, Hossman, Erick Erickson.
453  Marc Tinnemeyer caught the bug) 
454
455* SOLR-2848: Removed 'instanceof AbstractLuceneSpellChecker' hacks from distributed spellchecking code,
456  and added a merge() method to SolrSpellChecker instead. Previously if you extended SolrSpellChecker
457  your spellchecker would not work in distributed fashion.  (James Dyer via rmuir)
458 
459* SOLR-2509: StringIndexOutOfBoundsException in the spellchecker collate when the term contains
460  a hyphen. (Thomas Gambier caught the bug, Steffen Godskesen did the patch, via Erick Erickson)
461
462* SOLR-1730: Made it clearer when a core failed to load as well as better logging when the
463  QueryElevationComponent fails to properly initialize (gsingers)
464 
465* SOLR-1520: QueryElevationComponent now supports non-string ids (gsingers)
466
467* SOLR-3037: When using binary format in solrj the codec screws up parameters
468  (Sami Siren, Jörg Maier  via yonik)
469
470* SOLR-3062: A join in the main query was not respecting any filters pushed
471  down to it via acceptDocs since LUCENE-1536. (Mike Hugo, yonik)
472 
473* SOLR-3214: If you use multiple fl entries rather than a comma separated list, all but the first
474  entry can be ignored if you are using distributed search. (Tomas Fernandez Lobbe via Mark Miller)
475 
476* SOLR-3352: eDismax: pf2 should kick in for a query with 2 terms (janhoy)
477
478* SOLR-3361: ReplicationHandler "maxNumberOfBackups" doesn't work if backups are triggered on commit
479  (James Dyer, Tomas Fernandez Lobbe)
480
481* SOLR-2605: fixed tracking of the 'defaultCoreName' in CoreContainer so that
482  CoreAdminHandler could return consistent information regardless of wether
483  there is a a default core name or not. (steffkes, hossman)
484
485* SOLR-3370: fixed CSVResponseWriter to respect globs in the 'fl' param
486  (Keith Fligg via hossman)
487
488* SOLR-3436: Group count incorrect when not all shards are queried in the second
489  pass. (Francois Perron, Martijn van Groningen)
490
491* SOLR-3454: Exception when using result grouping with main=true and using
492  wt=javabin. (Ludovic Boutros, Martijn van Groningen)
493
494* SOLR-3446: Better errors when PatternTokenizerFactory is configured with
495  an invalid pattern, and include the 'name' whenever possible in plugin init
496  error messages. (hossman)
497
498* LUCENE-4075: Cleaner path usage in TestXPathEntityProcessor
499  (Greg Bowyer via hossman)
500 
501* SOLR-2923: IllegalArgumentException when using useFilterForSortedQuery on an
502  empty index. (Adrien Grand via Mark Miller)
503
504* SOLR-2352: Fixed TermVectorComponent so that it will not fail if the fl
505  param contains globs or psuedo-fields (hossman)
506
507* SOLR-3541: add missing solrj dependencies to binary packages.
508  (Thijs Vonk via siren)
509
510* SOLR-3522: fixed parsing of the 'literal()' function (hossman)
511
512* SOLR-3548: Fixed a bug in the cachability of queries using the {!join}
513  parser or the strdist() function, as well as some minor improvements to
514  the hashCode implementation of {!bbox} and {!geofilt} queries.
515  (hossman)
516
517Other Changes
518----------------------
519
520* SOLR-1846: Eliminate support for the abortOnConfigurationError
521  option.  It has never worked very well, and in recent versions of
522  Solr hasn't worked at all.  (hossman)
523
524* SOLR-1889: The default logic for the 'mm' param of DismaxQParser and
525  ExtendedDismaxQParser has been changed to be determined based on the
526  effective value of the 'q.op' param (hossman)
527
528* SOLR-1946: Misc improvements to the SystemInfoHandler: /admin/system
529  (hossman)
530
531* SOLR-2289: Tweak spatial coords for example docs so they are a bit
532  more spread out (Erick Erickson via hossman)
533
534* SOLR-2288: Small tweaks to eliminate compiler warnings.  primarily
535  using Generics where applicable in method/object declatations, and
536  adding @SuppressWarnings("unchecked") when appropriate (hossman)
537
538* SOLR-2375: Suggester Lookup implementations now store trie data
539  and load it back on init. This means that large tries don't have to be
540  rebuilt on every commit or core reload. (ab)
541
542* SOLR-2413: Support for returning multi-valued fields w/o <arr> tag
543  in the XMLResponseWriter was removed.  XMLResponseWriter only
544  no longer work with values less then 2.2 (ryan)
545
546* SOLR-2423: FieldType argument changed from String to Object
547  Conversion from SolrInputDocument > Object > Fieldable is now managed
548  by FieldType rather then DocumentBuilder.  (ryan)
549
550* SOLR-2461: QuerySenderListener and AbstractSolrEventListener are
551  now public (hossman)
552
553* LUCENE-2995: Moved some spellchecker and suggest APIs to modules/suggest:
554  HighFrequencyDictionary, SortedIterator, TermFreqIterator, and the
555  suggester APIs and implementations. (rmuir)
556
557* SOLR-2576: Remove deprecated SpellingResult.add(Token, int).
558  (James Dyer via rmuir)
559
560* LUCENE-3232: Moved MutableValue classes to new 'common' module. (Chris Male)
561
562* LUCENE-2883: FunctionQuery, DocValues (and its impls), ValueSource (and its
563  impls) and BoostedQuery have been consolidated into the queries module.  They
564  can now be found at o.a.l.queries.function.
565
566* SOLR-2027: FacetField.getValues() now returns an empty list if there are no
567  values, instead of null (Chris Male)
568
569* SOLR-1825: SolrQuery.addFacetQuery now enables facets automatically, like
570  addFacetField (Chris Male)
571
572* SOLR-2663: FieldTypePluginLoader has been refactored out of IndexSchema
573  and made public. (hossman)
574
575* SOLR-2331,SOLR-2691: Refactor CoreContainer's SolrXML serialization code and improve testing
576  (Yury Kats, hossman, Mark Miller)
577 
578* SOLR-2698: Enhance CoreAdmin STATUS command to return index size.
579  (Yury Kats, hossman, Mark Miller)
580 
581* SOLR-2654: The same Directory instance is now always used across a SolrCore so that
582  it's easier to add other DirectoryFactory's without static caching hacks.
583  (Mark Miller)
584
585* LUCENE-3286: 'luke' ant target has been disabled due to incompatibilities with XML
586  queryparser location (Chris Male)
587 
588* SOLR-1897: The data dir from the core descriptor should override the data dir from
589  the solrconfig.xml rather than the other way round. (Mark Miller)
590
591* SOLR-2756: Maven configuration: Excluded transitive stax:stax-api dependency
592  from org.codehaus.woodstox:wstx-asl dependency. (David Smiley via Steve Rowe)
593
594* SOLR-2588: Moved VelocityResponseWriter back to contrib module in order to
595  remove it as a mandatory core dependency.  (ehatcher)
596 
597* SOLR-2862: More explicit lexical resources location logged if Carrot2 clustering
598  extension is used. Fixed solr. impl. of IResource and IResourceLookup. (Dawid Weiss)
599
600* SOLR-1123: Changed JSONResponseWriter to now use application/json as its Content-Type
601  by default.  However the Content-Type can be overwritten and is set to text/plain in
602  the example configuration. (Uri Boness, Chris Male)
603 
604* SOLR-2607: Removed deprecated client/ruby directory, which included solr-ruby and flare.
605  (ehatcher)
606 
607* Solr-3032: logOnce from SolrException logOnce and all the supporting
608  structure is gone. abortOnConfugrationError is also gone as it is no longer referenced.
609  Errors should be caught and logged at the top-most level or logged and NOT propagated up the
610  chain. (Erick Erickson)
611
612* SOLR-2105: Remove support for deprecated "update.processor" (since 3.2), in favor of
613  "update.chain" (janhoy)
614
615* SOLR-3005: Default QueryResponseWriters are now initialized via init() with an empty
616  NamedList. (Gasol Wu, Chris Male)
617
618* SOLR-2607: Removed obsolete client/ folder (ehatcher, Eric Pugh, janhoy)
619
620* SOLR-3202, SOLR-3244: Dropping Support for JSP.  New Admin UI is all client side
621  (ryan, Aliaksandr Zhuhrou, Uwe Schindler)
622
623* SOLR-3159: Upgrade example and tests to run with Jetty 8 (ryan)
624
625* SOLR-3254: Upgrade Solr to Tika 1.1 (janhoy)
626
627* SOLR-3329: Dropped getSourceID() from SolrInfoMBean and using
628  getClass().getPackage().getSpecificationVersion() for Version. (ryan)
629
630* SOLR-3302: Upgraded SLF4j to version 1.6.4 (hossman)
631
632* SOLR-3322: Add more context to IndexReaderFactory.newReader (ab)
633
634* SOLR-3343: Moved FastWriter, FileUtils, RegexFileFilter, RTimer and SystemIdResolver
635  from org.apache.solr.common to org.apache.solr.util (Chris Male)
636
637* SOLR-3357: ResourceLoader.newInstance now accepts a Class representation of the expected
638  instance type (Chris Male)
639
640* SOLR-3388: HTTP caching is now disabled by default for RequestUpdateHandlers. (ryan)
641
642* SOLR-3309: web.xml now specifies metadata-complete=true (which requires
643  Servlet 2.5) to prevent servlet containers from scanning class annotations
644  on startup.  This allows for faster startup times on some servlet containers.
645  (Bill Bell, hossman)
646
647* SOLR-1893: Refactored some common code from LRUCache and FastLRUCache into
648  SolrCacheBase (Tomás Fernández Löbbe via hossman)
649
650* SOLR-3403: Deprecated Analysis Factories now log their own deprecation messages.
651  No logging support is provided by Factory parent classes. (Chris Male)
652
653* SOLR-1258: PingRequestHandler is now directly configured with a
654  "healthcheckFile" instead of looking for the legacy
655  <admin><healthcheck/></admin> syntax.  Filenames specified as relative
656  paths have been fixed so that they are resolved against the data dir
657  instead of the CWD of the java process. (hossman)
658
659* SOLR-3083: JMX beans now report Numbers as numeric values rather then String
660  (Tagged Siteops, Greg Bowyer via ryan)
661
662* SOLR-2796: Due to low level changes to support SolrCloud, the uniqueKey
663  field can no longer be populated via <copyField/> or <field default=...>
664  in the schema.xml.
665
666* SOLR-3534: The Dismax and eDismax query parsers will fall back on the 'df' parameter
667  when 'qf' is absent.  And if neither is present nor the schema default search field
668  then an exception will be thrown now. (dsmiley)
669
670Documentation
671----------------------
672
673* SOLR-2232: Improved README info on solr.solr.home in examples
674  (Eric Pugh and hossman)
675 
676==================  3.6.0  ==================
677
678Upgrading from Solr 3.5
679----------------------
680* SOLR-2983: As a consequence of moving the code which sets a MergePolicy from SolrIndexWriter to SolrIndexConfig,
681  (custom) MergePolicies should now have an empty constructor; thus an IndexWriter should not be passed as constructor
682  parameter but instead set using the setIndexWriter() method.
683
684* As doGet() methods in SimplePostTool was changed to static, the client applications of this
685  class need to be recompiled.
686
687* In Solr version 3.5 and earlier, HTMLStripCharFilter had known bugs in the
688  character offsets it provided, triggering e.g. exceptions in highlighting.
689  HTMLStripCharFilter has been re-implemented, addressing this and other
690  issues.  See the entry for LUCENE-3690 in the Bug Fixes section below for a
691  detailed list of changes.  For people who depend on the behavior of
692  HTMLStripCharFilter in Solr version 3.5 and earlier: the old implementation
693  (bugs and all) is preserved as LegacyHTMLStripCharFilter.
694
695* As of Solr 3.6, the <indexDefaults> and <mainIndex> sections of solrconfig.xml are deprecated
696  and replaced with a new <indexConfig> section. Read more in SOLR-1052 below.
697
698* SOLR-3040: The DIH's admin UI (dataimport.jsp) now requires DIH request handlers to start with
699  a '/'. (dsmiley)
700
701* SOLR-3161: <requestDispatcher handleSelect="false"> is now the default. An existing config will
702  probably work as-is because handleSelect was explicitly enabled in default configs. HandleSelect
703  makes /select work as well as enables the 'qt' parameter. Instead, consider explicitly
704  configuring /select as is done in the example solrconfig.xml, and register your other search
705  handlers with a leading '/' which is a recommended practice.  (David Smiley, Erik Hatcher)
706
707* SOLR-3161: Don't use the 'qt' parameter with a leading '/'.  It probably won't work in 4.0
708  and it's now limited in 3.6 to SearchHandler subclasses that aren't lazy-loaded.
709
710* Bugs found and fixed in the SignatureUpdateProcessor that previously caused
711  some documents to produce the same signature even when the configured fields
712  contained distinct (non-String) values.  Users of SignatureUpdateProcessor
713  are strongly advised that they should re-index as document signatures may
714  have now changed. (see SOLR-3200 & SOLR-3226 for details)
715
716* SOLR-2724: Specifying <defaultSearchField> and <solrQueryParser defaultOperator="..."/> in
717  schema.xml is now considered deprecated.  Instead you are encouraged to specify these via the "df"
718  and "q.op" parameters in your request handler definition.  (David Smiley)
719
720New Features
721----------------------
722* SOLR-2020: Add Java client that uses Apache Http Components http client (4.x).
723  (Chantal Ackermann, Ryan McKinley, Yonik Seeley, siren)
724
725* SOLR-2854: Now load URL content stream data (via stream.url) when called for during request handling,
726  rather than loading URL content streams automatically regardless of use.
727  (David Smiley and Ryan McKinley via ehatcher)
728
729* SOLR-2904: BinaryUpdateRequestHandler should be able to accept multiple update requests from
730  a stream (shalin)
731
732* SOLR-1565: StreamingUpdateSolrServer supports RequestWriter API and therefore, javabin update
733  format (shalin)
734
735* SOLR-2438 added MultiTermAwareComponent to the various classes to allow automatic lowercasing
736  for multiterm queries (wildcards, regex, prefix, range, etc). You can now optionally specify a
737  "multiterm" analyzer in our schema.xml, but Solr should "do the right thing" if you don't
738  specify <analyzer type="multiterm"> (Pete Sturge Erick Erickson, Mentoring from Seeley and Muir)
739
740* SOLR-2919: Added support for localized range queries when the analysis chain uses
741  CollationKeyFilter or ICUCollationKeyFilter.  (Michael Sokolov, rmuir)
742
743* SOLR-2982: Added BeiderMorseFilterFactory for Beider-Morse (BMPM) phonetic encoder. Upgrades
744  commons-codec to version 1.6  (Brooke Schreier Ganz, rmuir)
745
746* SOLR-1843: A new "rootName" attribute is now available when
747  configuring <jmx/> in solrconfig.xml.  If this attribute is set,
748  Solr will use it as the root name for all MBeans Solr exposes via
749  JMX.  The default root name is "solr" followed by the core name.
750  (Constantijn Visinescu, hossman)
751 
752* SOLR-2906: Added LFU cache options to Solr. (Shawn Heisey via Erick Erickson)
753
754* SOLR-3036: Ability to specify overwrite=false on the URL for XML updates.
755  (Sami Siren via yonik)
756
757* SOLR-2603: Add the encoding function for alternate fields in highlighting.
758  (Massimo Schiavon, koji)
759 
760* SOLR-1729: Evaluation of NOW for date math is done only once per request for
761  consistency, and is also propagated to shards in distributed search.
762  Adding a parameter NOW=<time_in_ms> to the request will override the
763  current time.  (Peter Sturge, yonik, Simon Willnauer)
764 
765* SOLR-1709: Distributed support for Date and Numeric Range Faceting
766  (Peter Sturge, David Smiley, hossman, Simon Willnauer)
767
768* SOLR-3054, LUCENE-3671: Add TypeTokenFilterFactory that creates TypeTokenFilter
769  that filters tokens based on their TypeAttribute.  (Tommaso Teofili via
770  Uwe Schindler)
771
772* LUCENE-3305, SOLR-3056: Added Kuromoji morphological analyzer for Japanese.
773  See the 'text_ja' fieldtype in the example to get started.
774  (Christian Moen, Masaru Hasegawa via Robert Muir)
775
776* SOLR-1860: StopFilterFactory, CommonGramsFilterFactory, and
777  CommonGramsQueryFilterFactory can optionally read stopwords in Snowball
778  format (specify format="snowball").  (Robert Muir)
779
780* SOLR-3105: ElisionFilterFactory optionally allows the parameter
781  ignoreCase (default=false).  (Robert Muir)
782
783* LUCENE-3714: Add WFSTLookupFactory, a suggester that uses a weighted FST
784  for more fine-grained suggestions.  (Mike McCandless, Dawid Weiss, Robert Muir)
785
786* SOLR-3143: Add SuggestQueryConverter, a QueryConverter intended for
787  auto-suggesters. (Robert Muir)
788
789* SOLR-3033: ReplicationHandler's backup command now supports a 'maxNumberOfBackups'
790  init param that can be used to delete all but the most recent N backups. (Torsten Krah, James Dyer)
791
792* SOLR-2202: Currency FieldType, whith support for currencies and exchange rates
793  (Greg Fodor & Andrew Morrison via janhoy, rmuir, Uwe Schindler)
794
795* SOLR-3026: eDismax: Locking down which fields can be explicitly queried (user fields aka uf)
796  (janhoy, hossmann, Tomás Fernández Löbbe)
797
798* SOLR-2826: URLClassify Update Processor (janhoy)
799
800* SOLR-2764: Create a NorwegianLightStemmer and NorwegianMinimalStemmer (janhoy)
801
802* SOLR-3221: Added the ability to directly configure aspects of the concurrency
803 and thread-pooling used within distributed search in solr. This allows for finer
804 grained controlled and can be tuned by end users to target their own specific
805 requirements. This builds on the work of the HttpCommComponent and uses the same configuration
806 block to configure the thread pool. The default configuration has
807 the same behaviour as solr 3.5, favouring throughput over latency. More
808 information can be found on the wiki (http://wiki.apache.org/solr/SolrConfigXml) (Greg Bowyer)
809
810* SOLR-2001: The query component will substitute an empty query that matches
811  no documents if the query parser returns null.  This also prevents an
812  exception from being thrown by the default parser if "q" is missing. (yonik)
813  SOLR-435: if q is "" then it's also acceptable. (dsmiley, hoss)
814
815Optimizations
816----------------------
817* SOLR-1931: Speedup for LukeRequestHandler and admin/schema browser. New parameter
818  reportDocCount defaults to 'false'. Old behavior still possible by specifying this as 'true'
819  (Erick Erickson)
820
821* SOLR-3012: Move System.getProperty("type") in postData() to main() and add type argument so that
822  the client applications of SimplePostTool can set content type via method argument. (koji)
823
824* SOLR-2888: FSTSuggester refactoring: internal storage is now UTF-8,
825  external sorting (on disk) prevents OOMs even with large data sets
826  (the bottleneck is now FST construction), code cleanups and API cleanups.
827  (Dawid Weiss, Robert Muir)
828
829Bug Fixes
830----------------------
831* SOLR-3187 SystemInfoHandler leaks filehandles (siren)
832
833* LUCENE-3820: Fixed invalid position indexes by reimplementing PatternReplaceCharFilter.
834  This change also drops real support for boundary characters -- all input is prebuffered
835  for pattern matching. (Dawid Weiss)
836
837* SOLR-3068: Fixed NPE in ThreadDumpHandler (siren)
838
839* SOLR-2912: Fixed File descriptor leak in ShowFileRequestHandler (Michael Ryan, shalin)
840
841* SOLR-2819: Improved speed of parsing hex entities in HTMLStripCharFilter
842  (Bernhard Berger, hossman)
843 
844* SOLR-2509: StringIndexOutOfBoundsException in the spellchecker collate when the term contains
845  a hyphen. (Thomas Gambier caught the bug, Steffen Godskesen did the patch, via Erick Erickson)
846
847* SOLR-2955: Fixed IllegalStateException when querying with group.sort=score desc in sharded
848             environment. (Steffen Elberg Godskesen, Martijn van Groningen)
849
850* SOLR-2956: Fixed inconsistencies in the flags (and flag key) reported by
851  the LukeRequestHandler (hossman)
852
853* SOLR-1730: Made it clearer when a core failed to load as well as better logging when the
854  QueryElevationComponent fails to properly initialize (gsingers)
855
856* SOLR-1520: QueryElevationComponent now supports non-string ids (gsingers)
857
858* SOLR-3024: Fixed JSONTestUtil.matchObj, in previous releases it was not
859  respecting the 'delta' arg (David Smiley via hossman)
860 
861* SOLR-2542: Fixed DIH Context variables which were broken for all scopes other
862  then SCOPE_ENTITY (Linbin Chen & Frank Wesemann via hossman)
863 
864* SOLR-3042: Fixed Maven Jetty plugin configuration.
865  (David Smiley via Steve Rowe)
866
867* SOLR-2970: CSV ResponseWriter returns fields defined as stored=false in schema (janhoy)
868
869* LUCENE-3690, LUCENE-2208, SOLR-882, SOLR-42: Re-implemented
870  HTMLStripCharFilter as a JFlex-generated scanner.  See below for a list
871  of bug fixes and other changes.  To get the same behavior as
872  HTMLStripCharFilter in Solr version 3.5 and earlier (including the bugs),
873  use LegacyHTMLStripCharFilter, which is the previous implementation.
874
875  Behavior changes from the previous version:
876
877  - Known offset bugs are fixed.
878  - The "Mark invalid" exceptions reported in SOLR-1283 are no longer
879    triggered (the bug is still present in LegacyHTMLStripCharFilter).
880  - The character entity "&apos;" is now always properly decoded.
881  - More cases of <script> tags are now properly stripped.
882  - CDATA sections are now handled properly.
883  - Valid tag name characters now include the supplementary Unicode characters
884    from Unicode character classes [:ID_Start:] and [:ID_Continue:].
885  - Uppercase character entities "&QUOT;", "&COPY;", "&GT;", "&LT;", "&REG;",
886    and "&AMP;" are now recognized and handled as if they were in lowercase.
887  - The REPLACEMENT CHARACTER U+FFFD is now used to replace numeric character
888    entities for unpaired UTF-16 low and high surrogates (in the range
889    [U+D800-U+DFFF]).
890  - Properly paired numeric character entities for UTF-16 surrogates are now
891    converted to the corresponding code units.
892  - Opening tags with unbalanced quotation marks are now properly stripped.
893  - Literal "<" and ">" characters in opening tags, regardless of whether they
894    appear inside quotation marks, now inhibit recognition (and stripping) of
895    the tags.  The only exception to this is for values of event-handler
896    attributes, e.g. "onClick", "onLoad", "onSelect".
897  - A newline '\n' is substituted instead of a space for stripped HTML markup.
898  - Nothing is substituted for opening and closing inline tags - they are
899    simply removed.  The list of inline tags is (case insensitively): <a>,
900    <abbr>, <acronym>, <b>, <basefont>, <bdo>, <big>, <cite>, <code>, <dfn>,
901    <em>, <font>, <i>, <img>, <input>, <kbd>, <label>, <q>, <s>, <samp>,
902    <select>, <small>, <span>, <strike>, <strong>, <sub>, <sup>, <textarea>,
903    <tt>, <u>, and <var>.
904  - HTMLStripCharFilterFactory now handles HTMLStripCharFilter's "escapedTags"
905    feature: opening and closing tags with the given names, including any
906    attributes and their values, are left intact in the output.
907  (Steve Rowe)
908
909* LUCENE-3717: Fixed offset bugs in TrimFilter, WordDelimiterFilter, and
910  HyphenatedWordsFilter where they would create invalid offsets in
911  some situations, leading to problems in highlighting.  (Robert Muir)
912
913* SOLR-2280: commitWithin ignored for a delete query (Juan Grande via janhoy)
914
915* SOLR-3073: Fixed 'Invalid UUID string' error when having an UUID field as
916  the unique key and executing a distributed grouping request. (Devon Krisman, Martijn van Groningen)
917
918* SOLR-3084: Fixed initialization error when using
919  <queryResponseWriter default="true" ... /> (Bernd Fehling and hossman)
920
921* SOLR-3109: Fixed numerous redundant shard requests when using distributed grouping.
922  (rblack via Martijn van Groningen)
923
924* SOLR-3052: Fixed typo in distributed grouping parameters.
925  (Martijn van Groningen, Grant Ingersoll)
926
927* SOLR-2909: Add support for ResourceLoaderAware tokenizerFactories in synonym
928  filter factories. (Tom Klonikowski, Jun Ohtani via Koji Sekiguchi)
929 
930* SOLR-3168: ReplicationHandler "numberToKeep" & "maxNumberOfBackups" parameters
931  would keep only 1 backup, even if more than 1 was specified (Neil Hooey, James Dyer)
932
933* SOLR-3009: hitGrouped.vm isn't shipped with 3.x (ehatcher, janhoy)
934
935* SOLR-3195: timeAllowed is ignored for grouping queries
936  (Russell Black via Martijn van Groningen)
937
938* SOLR-2124: Do not log stack traces for "Service Disabled" / 503 Exceptions (PingRequestHandler, etc)
939  (James Dyer, others)
940 
941* SOLR-3260: DataImportHandler: ScriptTransformer gives better error messages when
942  problems arise on initalization (no Script Engine, invalid script, etc). (James Dyer)
943
944* SOLR-2959: edismax now respects the magic fields '_val_' and '_query_'
945  (Michael Watts, hossman)
946
947* SOLR-3074: fix SolrPluginUtils.docListToSolrDocumentList to respect the
948  list of fields specified.  This fix also deprecates
949  DocumentBuilder.loadStoredFields which is not used anywhere in Solr,
950  and was fundamentally broken/bizarre.
951  (hossman, Ahmet Arslan)
952
953* SOLR-3264: Fix CoreContainer and SolrResourceLoader logging to be more
954  clear about when SolrCores are being created, and stop misleading people
955  about SolrCore instanceDir's being the "Solr Home Dir" (hossman)
956
957* SOLR-3046: Fix whitespace typo in DIH response "Time taken" (hossman)
958
959* SOLR-3261: Fix edismax to respect query operators when literal colons
960  are used in query string.  (Juan Grande via hossman)
961
962* SOLR-3226: Fix SignatureUpdateProcessor to no longer ignore non-String
963  field values (Spyros Kapnissis, hossman)
964
965* SOLR-3200: Fix SignatureUpdateProcessor "all fields" mode to use all
966  fields of each document instead of the fields specified by the first
967  document indexed (Spyros Kapnissis via hossman)
968
969* SOLR-3316: Distributed grouping failed when rows parameter was set to 0 and sometimes returned a wrong
970  hit count as matches. (Cody Young, Martijn van Groningen)
971
972Other Changes
973----------------------
974* SOLR-2922: Upgrade commons-io and commons-lang to 2.1 and 2.6, respectively. (koji)
975
976* SOLR-2920: Refactor frequent conditional use of DefaultSolrParams and
977  AppendedSolrParams into factory methods.
978  (David Smiley via hossman)
979
980* SOLR-3032: Deprecate logOnce from SolrException logOnce and all the supporting
981  structure will disappear in 4.0. Errors should be caught and logged at the
982  top-most level or logged and NOT propagated up the chain. (Erick Erickson)
983
984* SOLR-2718: Add ability to lazy load response writers, defined with startup="lazy".
985  (ehatcher)
986
987* SOLR-2901: Upgrade Solr to Tika 1.0 (janhoy)
988
989* SOLR-3059: Example XSL stylesheet for indexing query result XML (janhoy)
990
991* SOLR-3097, SOLR-3105: Add analysis configurations for different languages to
992  the example.  (Christian Moen, Robert Muir)
993
994* SOLR-3005: Default QueryResponseWriters are now initialized via init() with an empty
995  NamedList. (Gasol Wu, Chris Male)
996
997* SOLR-3140: Upgrade schema version to 1.5, where omitNorms defaults to "true" for all
998  primitive (non-analyzed) field types such as int, float, date, bool, string.. (janhoy)
999
1000* SOLR-3077: Better error messages when attempting to use "blank" field names
1001  (Antony Stubbs via hossman)
1002
1003* SOLR-2712: expecting fl=score to return all fields is now deprecated.
1004  In solr 4.0, this will only return the score.  (ryan)
1005
1006* SOLR-3156: Check for Lucene directory locks at startup. In previous versions
1007  this check was only performed during modifying (e.g. adding and deleting
1008  documents) the index. (Luca Cavanna via Martijn van Groningen)
1009
1010* SOLR-1052: Deprecated <indexDefaults> and <mainIndex> in solrconfig.xml
1011  From now, all settings go in the new <indexConfig> tag, and some defaults are
1012  changed: useCompoundFile=false, ramBufferSizeMB=32, lockType=native, so that
1013  the effect of NOT specifying <indexConfig> at all gives same result as the
1014  example config used to give in 3.5 (janhoy, gsingers)
1015
1016Build
1017----------------------
1018* SOLR-2487: Add build target to package war without slf4j jars (janhoy)
1019
1020* SOLR-3112: Fix tests not to write to src/test-files (Luca Cavanna via Robert Muir)
1021
1022* LUCENE-3753: Restructure the Solr build system. (Steve Rowe)
1023
1024* SOLR-3204: The packaged pre-release artifact of Commons CSV used the original
1025  package name (org.apache.commons.csv). This created a compatibility issue as
1026  the Apache Commons team works toward an official release of Commons CSV.
1027  The source of Commons CSV was added under a separate package name to the
1028  Solr source code.  (Uwe Schindler, Chris Male, Emmanuel Bourg) 
1029 
1030* LUCENE-3930: Changed build system to use Apache Ivy for retrival of 3rd
1031  party JAR files.  Please review README.txt for instructions.
1032  (Robert Muir, Chris Male, Uwe Schindler, Steven Rowe, Hossman)
1033
1034==================  3.5.0  ==================
1035
1036New Features
1037----------------------
1038* SOLR-2749: Add boundary scanners for FastVectorHighlighter. <boundaryScanner/>
1039  can be specified with a name in solrconfig.xml, and use hl.boundaryScanner=name
1040  parameter to specify the named <boundaryScanner/>. (koji)
1041
1042* SOLR-2066,SOLR-2776: Added support for distributed grouping.
1043  (Martijn van Groningen, Jasper van Veghel, Matt Beaumont)
1044
1045* SOLR-2769: Added factory for the new Hunspell stemmer capable of doing stemming
1046  for 99 languages (janhoy, cmale)
1047
1048* SOLR-1979: New contrib "langid". Adds language identification capabilities as an
1049  Update Processor, using Tika's LanguageIdentifier or Cybozu language-detection
1050  library (janhoy, Tommaso Teofili, gsingers)
1051
1052* SOLR-2818: Added before/after count response parsing support for range facets in
1053  SolrJ. (Bernhard Frauendienst via Martijn van Groningen) 
1054 
1055* SOLR-2276: Add support for cologne phonetic to PhoneticFilterFactory.
1056  (Marc Pompl via rmuir)
1057
1058* SOLR-1926: Add hl.q parameter. (koji)
1059
1060* SOLR-2881: Numeric types now support sortMissingFirst/Last. This includes Trie and date types
1061  (Ryan McKinley, Mike McCandless, Uwe Schindler, Erick Erickson)
1062
1063* SOLR-1023: StatsComponent now supports date fields and string fields.
1064  (Chris Male, Mark Holland, Gunnlaugur Thor Briem, Ryan McKinley)
1065
1066* SOLR-2578: ReplicationHandler's backup command now supports a 'numberToKeep'
1067  request param that can be used to delete all but the most recent N backups.
1068  (James Dyer via hossman)
1069
1070Optimizations
1071----------------------
1072
1073* SOLR-2742: SolrJ: Provide commitWithinMs as optional parameter for all add() methods,
1074  making the feature more conveniently accessible for developers (janhoy)
1075
1076Bug Fixes
1077----------------------
1078* SOLR-2748: The CommitTracker used for commitWith or autoCommit by maxTime
1079  could commit too frequently and could block adds until a new searcher was
1080  registered. (yonik)
1081
1082* SOLR-2726: Fixed NullPointerException when using spellcheck.q with Suggester.
1083  (Bernd Fehling, valentin via rmuir)
1084
1085* SOLR-2772: Fixed Date parsing/formatting of years 0001-1000 (hossman)
1086
1087* SOLR-2763: Extracting update request handler throws exception and returns 400
1088  when zero-length file posted using multipart form post (janhoy)
1089
1090* SOLR-2780: Fixed issue where multi select facets didn't respect group.truncate parameter.
1091  (Martijn van Groningen, Ramzi Alqrainy)
1092 
1093* SOLR-2793: In rare cases (most likely during shutdown), a SolrIndexSearcher can be left
1094  open if the executor rejects a task. (Mark Miller)
1095
1096* SOLR-2791: Replication: abortfetch command is broken if replication was started
1097  by fetchindex command instead of a regular poll (Yury Kats via shalin)
1098
1099* SOLR-2861: Fix extremely rare race condition on commit that can result
1100  in a NPE (yonik)
1101
1102* SOLR-2813: Fix HTTP error codes returned when requests contain strings that
1103  can not be parsed as numbers for Trie fields. (Jeff Crump and hossman)
1104 
1105* SOLR-2902: List of collations are wrong parsed in SpellCheckResponse causing
1106  a wrong number of collation results in the response.
1107  (Bastiaan Verhoef, James Dyer via Simon Willnauer)
1108
1109 Other Changes
1110----------------------
1111
1112* SOLR-2750: Make both "update.chain" and the deprecated "update.param" work
1113  consistently everywhere; see also SOLR-2105. (Mark Miller, janhoy)
1114
1115* LUCENE-3410: Deprecated the WordDelimiterFilter constructors accepting multiple
1116  ints masquerading as booleans.  Preferred constructor now accepts a single int
1117  bitfield (Chris Male)
1118 
1119* SOLR-2758: Moved ConcurrentLRUCache from o.a.s.common.util package in the solrj
1120  module to the o.a.s.util package in the Solr core module.
1121  (David Smiley via Steve Rowe)
1122
1123* SOLR-2766: Package individual javadoc sites for solrj and test-framework.
1124  (Steve Rowe, Mike McCandless)
1125
1126* SOLR-2771: Solr modules' tests should not depend on solr-core test classes;
1127  move BufferingRequestProcessor from solr-core tests to test-framework so that
1128  the Solr Cell module can use it. (janhoy, Steve Rowe)
1129
1130* LUCENE-3457: Upgrade commons-compress to 1.2 (Doron Cohen)
1131
1132* SOLR-2757: min() and max() functions now support an arbitrary number of
1133  ValueSources  (Bill Bell via hossman)
1134
1135* SOLR-2372: Upgrade Solr to Tika 0.10 (janhoy)
1136
1137* SOLR-2792: Allow case insensitive Hunspell stemming (janhoy, rmuir)
1138
1139* SOLR-2862: More explicit lexical resources location logged if Carrot2 clustering
1140  extension is used. Fixed solr. impl. of IResource and IResourceLookup. (Dawid Weiss)
1141
1142* SOLR-2849: Fix dependencies in Maven POMs. (David Smiley via Steve Rowe)
1143
1144* SOLR-2591: Remove commitLockTimeout option from solrconfig.xml (Luca Cavanna via Martijn van Groningen)
1145
1146==================  3.4.0  ==================
1147
1148Upgrading from Solr 3.3
1149----------------------
1150
1151* The Lucene index format has changed and as a result, once you upgrade,
1152  previous versions of Solr will no longer be able to read your indices.
1153  In a master/slave configuration, all searchers/slaves should be upgraded
1154  before the master.  If the master were to be updated first, the older
1155  searchers would not be able to read the new index format.
1156
1157* Previous versions of Solr silently allow and ignore some contradictory
1158  properties specified in schema.xml.  For example:
1159    - indexed="false" omitNorms="false"
1160    - indexed="false" omitTermFreqAndPositions="false"
1161  Field property validation has now been fixed, to ensure that
1162  contradictions like these now generate error messages.  If users
1163  have existing schemas that generate one of these new "conflicting
1164  'false' field options for non-indexed field" error messages the
1165  conflicting "omit*" properties can safely be removed, or changed to
1166  "true" for consistent behavior with previous Solr versions.  This
1167  situation has now been fixed to cause an error on startup when these
1168  contradictory options.  See SOLR-2669.
1169 
1170* FacetComponent no longer catches and embeds exceptions occurred during facet
1171  processing, it throws HTTP 400 or 500 exceptions instead.
1172
1173New Features
1174----------------------
1175
1176* SOLR-2540: CommitWithin as an Update Request parameter
1177  You can now specify &commitWithin=N (ms) on the update request (janhoy)
1178
1179* SOLR-2458: post.jar enhanced to handle JSON, CSV and <optimize> (janhoy)
1180
1181* LUCENE-3234: add a new parameter hl.phraseLimit for FastVectorHighlighter speed up.
1182  (Mike Sokolov via koji)
1183
1184* SOLR-2429: Ability to add cache=false to queries and query filters to avoid
1185  using the filterCache or queryCache.  A cost may also be specified and is used
1186  to order the evaluation of non-cached filters from least to greatest cost .
1187  For very expensive query filters (cost >= 100) if the query implements
1188  the PostFilter interface, it will be used to obtain a Collector that is
1189  checked only for documents that match the main query and all other filters.
1190  The "frange" query now implements the PostFilter interface.  (yonik)
1191
1192* SOLR-2630: Added new XsltUpdateRequestHandler that works like
1193  XmlUpdateRequestHandler but allows to transform the POSTed XML document
1194  using XSLT. This allows to POST arbitrary XML documents to the update
1195  handler, as long as you also provide a XSL to transform them to a valid
1196  Solr input document.  (Upayavira, Uwe Schindler)
1197
1198* SOLR-2615: Log individual updates (adds and deletes) at the FINE level
1199  before adding to the index.  Fix a null pointer exception in logging
1200  when there was no unique key. (David Smiley via yonik)
1201
1202* LUCENE-2048: Added omitPositions to the schema, so you can omit position
1203  information while still indexing term frequencies.  (rmuir)
1204
1205* SOLR-2584: add UniqFieldsUpdateProcessor that removes duplicate values in the
1206  specified fields. (Elmer Garduno, koji)
1207
1208* SOLR-2670: Added NIOFSDirectoryFactory (yonik)
1209
1210* SOLR-2523: Added support in SolrJ to easily interact with range facets.
1211  The range facet response can be parsed and is retrievable from the
1212  QueryResponse class. The SolrQuery class has convenient methods for using
1213  range facets. (Martijn van Groningen)
1214
1215* SOLR-2637: Added support for group result parsing in SolrJ.
1216  (Tao Cheng, Martijn van Groningen)
1217
1218* SOLR-2665: Added post group faceting. Facet counts are based on the most
1219  relevant document of each group matching the query. This feature has the
1220  same impact on the StatsComponent. (Martijn van Groningen)
1221
1222* SOLR-2675: CoreAdminHandler now allows arbitrary properties to be
1223  specified when CREATEing a new SolrCore using property.* request
1224  params.  (Yury Kats, hossman)
1225
1226* SOLR-2714: JSON update format - "null" field values are now dropped
1227  instead of causing an exception. (Trygve LaugstÞl, yonik)
1228
1229
1230Optimizations
1231----------------------
1232
1233* LUCENE-3233: Improved memory usage, build time, and performance of
1234  SynonymFilterFactory.  (Mike McCandless, Robert Muir)
1235
1236Bug Fixes
1237----------------------
1238
1239* SOLR-2625: TermVectorComponent throws NPE if TF-IDF option is used without DF
1240  option. (Daniel Erenrich, Simon Willnauer)
1241
1242* SOLR-2631: PingRequestHandler should not allow to ping itsself using "qt"
1243  param to prevent infinite loop. (Edoardo Tosca, Uwe Schindler)
1244
1245* SOLR-2636: Fix explain functionality for negative queries. (Tom Hill via yonik)
1246
1247* SOLR-2538: Range Faceting on long/double fields could overflow if values
1248  bigger then the max int/float were used.
1249  (Erbi Hanka, hossman)
1250
1251* SOLR-2230: CommonsHttpSolrServer.addFile could not be used to send
1252  multiple files in a single request.
1253  (Stephan GÃŒnther, hossman)
1254
1255* SOLR-2541: PluginInfos was not correctly parsing <long/> tags when
1256  initializing plugins
1257  (Frank Wesemann, hossman)
1258
1259* SOLR-2623: Solr JMX MBeans do not survive core reloads (Alexey Serba, shalin)
1260
1261* Fixed grouping bug when start is bigger than rows and format is simple that zero documents are returned even
1262  if there are documents to display. (Martijn van Groningen, Nikhil Chhaochharia)
1263
1264* SOLR-2564: Fixed ArrayIndexOutOfBoundsException when using simple format and
1265  start > 0 (Martijn van Groningen, Matteo Melli)
1266
1267* SOLR-2642: Fixed sorting by function when using grouping. (Thomas Heigl, Martijn van Groningen)
1268
1269* SOLR-2535: REGRESSION: in Solr 3.x and trunk the admin/file handler
1270  fails to show directory listings (David Smiley, Peter Wolanin via Erick Erickson)
1271
1272* SOLR-2545: ExternalFileField file parsing would fail if any key
1273  contained an "=" character.  It now only looks for the last "=" delimiter
1274  prior to the float value.
1275  (Markus Jelsma, hossman)
1276
1277* SOLR-2662: When Solr is configured to have no queryResultCache, the
1278  "start" parameter was not honored and the documents returned were
1279   0 through start+offset.  (Markus Jelsma, yonik)
1280
1281* SOLR-2669: Fix backwards validation of field properties in
1282  SchemaField.calcProps (hossman)
1283
1284* SOLR-2676: Add "welcome-file-list" to solr.war so admin UI works correctly
1285  in servlet containers such as WebSphere that do not use a default list
1286  (Jay R. Jaeger, hossman)
1287
1288* SOLR-2606: Fixed sort parsing of fields containing punctuation that
1289  failed due to sort by function changes introduced in SOLR-1297
1290  (Mitsu Hadeishi, hossman)
1291
1292 Other Changes
1293----------------------
1294
1295* SOLR-2629: Eliminate deprecation warnings in some JSPs.
1296  (Bernd Fehling, hossman)
1297
1298Build
1299----------------------
1300
1301* SOLR-2452,SOLR-2653,LUCENE-3323,SOLR-2659,LUCENE-3329,SOLR-2666:
1302  Rewrote the Solr build system:
1303  - Integrated more fully with the Lucene build system: generalized the
1304    Lucene build system and eliminated duplication.
1305  - Converted all Solr contribs to the Lucene/Solr conventional src/ layout:
1306    java/, resources/, test/, and test-files/<contrib-name>.
1307  - Created a new Solr-internal module named "core" by moving the java/,
1308    test/, and test-files/ directories from solr/src/ to solr/core/src/.
1309  - Merged solr/src/webapp/src/ into solr/core/src/java/.
1310  - Eliminated solr/src/ by moving all its directories up one level;
1311    renamed solr/src/site/ to solr/site-src/ because solr/site/ already
1312    exists.
1313  - Merged solr/src/common/ into solr/solrj/src/java/.
1314  - Moved o.a.s.client.solrj.* and o.a.s.common.* tests from
1315    solr/src/test/ to solr/solrj/src/test/.
1316  - Made the solrj tests not depend on the solr core tests by moving
1317    some classes from solr/src/test/ to solr/test-framework/src/java/.
1318  - Each internal module (core/, solrj/, test-framework/, and webapp/)
1319    now has its own build.xml, from which it is possible to run
1320    module-specific targets.  solr/build.xml delegates all build
1321    tasks (via <ant dir="internal-module-dir"> calls) to these
1322    modules' build.xml files.
1323  (Steve Rowe, Robert Muir)
1324
1325* LUCENE-3406: Add ant target 'package-local-src-tgz' to Lucene and Solr
1326  to package sources from the local working copy.
1327  (Seung-Yeoul Yang via Steve Rowe)
1328
1329Documentation
1330----------------------
1331
1332==================  3.3.0  ==================
1333
1334Upgrading from Solr 3.2.0
1335----------------------
1336 * SolrCore's CloseHook API has been changed in a backward-incompatible way. It
1337   has been changed from an interface to an abstract class. Any custom
1338   components which use the SolrCore.addCloseHook method will need to
1339   be modified accordingly. To migrate, put your old CloseHook#close impl into
1340   CloseHook#preClose.
1341
1342New Features
1343----------------------
1344
1345* SOLR-2378: A new, automaton-based, implementation of suggest (autocomplete)
1346  component, offering an order of magnitude smaller memory consumption
1347  compared to ternary trees and jaspell and very fast lookups at runtime.
1348  (Dawid Weiss)
1349
1350* SOLR-2400: Field- and DocumentAnalysisRequestHandler now provide a position
1351  history for each token, so you can follow the token through all analysis stages.
1352  The output contains a separate int[] attribute containing all positions from
1353  previous Tokenizers/TokenFilters (called "positionHistory").
1354  (Uwe Schindler)
1355
1356* SOLR-2524: (SOLR-236, SOLR-237, SOLR-1773, SOLR-1311) Grouping / Field collapsing
1357  using the Lucene grouping contrib. The search result can be grouped by field and query.
1358  (Martijn van Groningen, Emmanuel Keller, Shalin Shekhar Mangar, Koji Sekiguchi,
1359   Iván de Prado, Ryan McKinley, Marc Sturlese, Peter Karich, Bojan Smid,
1360   Charles Hornberger, Dieter Grad, Dmitry Lihachev, Doug Steigerwald,
1361   Karsten Sperling, Michael Gundlach, Oleg Gnatovskiy, Thomas Traeger,
1362   Harish Agarwal, yonik, Michael McCandless, Bill Bell)
1363
1364* SOLR-1331 -- Added a srcCore parameter to CoreAdminHandler's mergeindexes action
1365  to merge one or more cores' indexes to a target core (shalin)
1366
1367* SOLR-2610 -- Add an option to delete index through CoreAdmin UNLOAD action (shalin)
1368
1369Optimizations
1370----------------------
1371
1372* SOLR-2567: Solr now defaults to TieredMergePolicy. See http://s.apache.org/merging
1373  for more information.  (rmuir)
1374
1375Bug Fixes
1376----------------------
1377
1378* SOLR-2519: Improve text_* fieldTypes in example schema.xml: improve
1379  cross-language defaults for text_general; break out separate
1380  English-specific fieldTypes (Jan HÞydahl, hossman, Robert Muir,
1381  yonik, Mike McCandless)
1382
1383* SOLR-2462: Fix extremely high memory usage problems with spellcheck.collate.
1384  Separately, an additional spellcheck.maxCollationEvaluations (default=10000)
1385  parameter is added to avoid excessive CPU time in extreme cases (e.g. long
1386  queries with many misspelled words).  (James Dyer via rmuir)
1387
1388Other Changes
1389----------------------
1390
1391* SOLR-2571: Add a commented out example of the spellchecker's thresholdTokenFrequency
1392  parameter to the example solrconfig.xml, and also add a unit test for this feature.
1393  (James Dyer via rmuir)
1394
1395* SOLR-2576: Deprecate SpellingResult.add(Token token, int docFreq), please use
1396  SpellingResult.addFrequency(Token token, int docFreq) instead.
1397  (James Dyer via rmuir)
1398
1399* SOLR-2574: Upgrade slf4j to v1.6.1 (shalin)
1400
1401* LUCENE-3204: The maven-ant-tasks jar is now included in the source tree;
1402  users of the generate-maven-artifacts target no longer have to manually
1403  place this jar in the Ant classpath.  NOTE: when Ant looks for the
1404  maven-ant-tasks jar, it looks first in its pre-existing classpath, so
1405  any copies it finds will be used instead of the copy included in the
1406  Lucene/Solr source tree.  For this reason, it is recommeded to remove
1407  any copies of the maven-ant-tasks jar in the Ant classpath, e.g. under
1408  ~/.ant/lib/ or under the Ant installation's lib/ directory. (Steve Rowe)
1409 
1410* SOLR-2611: Fix typos in the example configuration (Eric Pugh via rmuir)
1411
1412==================  3.2.0  ==================
1413Versions of Major Components
1414---------------------
1415Apache Lucene trunk
1416Apache Tika 0.8
1417Carrot2 3.4.2
1418
1419
1420Upgrading from Solr 3.1
1421----------------------
1422 
1423* The updateRequestProcessorChain for a RequestHandler is now defined
1424  with update.chain rather than update.processor. The latter still works,
1425  but has been deprecated.
1426
1427Detailed Change List
1428----------------------
1429
1430New Features
1431----------------------
1432
1433* SOLR-2496: Add ability to specify overwrite and commitWithin as request
1434  parameters (e.g. specified in the URL) when using the JSON update format,
1435  and added a simplified format for specifying multiple documents.
1436  Example: [{"id":"doc1"},{"id":"doc2"}]
1437  (yonik)
1438
1439* SOLR-2113: Add TermQParserPlugin, registered as "term".  This is useful
1440  when generating filter queries from terms returned from field faceting or
1441  the terms component. Example: fq={!term f=weight}1.5   (hossman, yonik)
1442
1443* SOLR-1915: DebugComponent now supports using a NamedList to model
1444  Explanation objects in it's responses instead of
1445  Explanation.toString  (hossman)
1446
1447Optimizations
1448----------------------
1449
1450Bug Fixes
1451----------------------
1452
1453* SOLR-2445: Change the default qt to blank in form.jsp, because there is no "standard"
1454  request handler unless you have it in your solrconfig.xml explicitly. (koji)
1455
1456* SOLR-2455: Prevent double submit of forms in admin interface.
1457  (Jeffrey Chang via uschindler)
1458
1459* SOLR-2464: Fix potential slowness in QueryValueSource (the query() function) when
1460  the query is very sparse and may not match any documents in a segment. (yonik)
1461
1462* SOLR-2469: When using java replication with replicateAfter=startup, the first
1463  commit point on server startup is never removed. (yonik)
1464
1465* SOLR-2466: SolrJ's CommonsHttpSolrServer would retry requests on failure, regardless
1466  of the configured maxRetries, due to HttpClient having it's own retry mechanism
1467  by default.  The retryCount of HttpClient is now set to 0, and SolrJ does
1468  the retry.  (yonik)
1469
1470* SOLR-2409: edismax parser - treat the text of a fielded query as a literal if the
1471  fieldname does not exist.  For example Mission: Impossible should not search on
1472  the "Mission" field unless it's a valid field in the schema.  (Ryan McKinley, yonik)
1473
1474* SOLR-2403: facet.sort=index reported incorrect results for distributed search
1475  in a number of scenarios when facet.mincount>0.  This patch also adds some
1476  performance/algorithmic improvements when (facet.sort=count && facet.mincount=1
1477  && facet.limit=-1) and when (facet.sort=index && facet.mincount>0)  (yonik)
1478
1479* SOLR-2333: The "rename" core admin action does not persist the new name to solr.xml
1480  (Rasmus Hahn, Paul R. Brown via Mark Miller)
1481 
1482* SOLR-2390: Performance of usePhraseHighlighter is terrible on very large Documents,
1483  regardless of hl.maxDocCharsToAnalyze. (Mark Miller)
1484
1485* SOLR-2474: The helper TokenStreams in analysis.jsp and AnalysisRequestHandlerBase
1486  did not clear all attributes so they displayed incorrect attribute values for tokens
1487  in later filter stages. (uschindler, rmuir, yonik)
1488
1489* SOLR-2467: Fix <analyzer class="..." /> initialization so any errors
1490  are logged properly.  (hossman)
1491
1492* SOLR-2493: SolrQueryParser was fixed to not parse the SolrConfig DOM tree on each
1493  instantiation which is a huge slowdown.  (Stephane Bailliez via uschindler)
1494
1495* SOLR-2495: The JSON parser could hang on corrupted input and could fail
1496  to detect numbers that were too large to fit in a long.  (yonik)
1497
1498* SOLR-2520: Make JSON response format escape \u2029 as well as \u2028
1499  in strings since those characters are not valid in javascript strings
1500  (although they are valid in JSON strings).  (yonik)
1501
1502* SOLR-2536: Add ReloadCacheRequestHandler to fix ExternalFileField bug (if reopenReaders
1503  set to true and no index segments have been changed, commit cannot trigger reload
1504  external file). (koji)
1505
1506* SOLR-2539: VectorValueSource.floatVal incorrectly used byteVal on sub-sources.
1507  (Tom Liu via yonik)
1508
1509* SOLR-2554: RandomSortField didn't work when used in a function query. (yonik)
1510
1511
1512Other Changes
1513----------------------
1514
1515* SOLR-2061: Pull base tests out into a new Solr Test Framework module,
1516  and publish binary, javadoc, and source test-framework jars.
1517  (Drew Farris, Robert Muir, Steve Rowe)
1518
1519* SOLR-2105: Rename RequestHandler param 'update.processor' to 'update.chain'.
1520        (Jan HÞydahl via Mark Miller)
1521
1522* SOLR-2485: Deprecate BaseResponseWriter, GenericBinaryResponseWriter, and
1523  GenericTextResponseWriter.  These classes will be removed in 4.0.  (ryan)
1524
1525* SOLR-2451: Enhance assertJQ to allow individual tests to specify the
1526  tolerance delta used in numeric equalities.  This allows for slight
1527  variance in asserting score comparisons in unit tests.
1528  (David Smiley, Chris Hostetter)
1529
1530* SOLR-2528: Remove default="true" from HtmlEncoder in example solrconfig.xml,
1531  because html encoding confuses non-ascii users. (koji)
1532
1533Build
1534----------------------
1535
1536* LUCENE-3006: Building javadocs will fail on warnings by default.  Override with -Dfailonjavadocwarning=false (sarowe, gsingers)
1537
1538
1539Documentation
1540----------------------
1541
1542
1543==================  3.1.0 ==================
1544Versions of Major Components
1545---------------------
1546Apache Lucene 3.1.0
1547Apache Tika 0.8
1548Carrot2 3.4.2
1549Velocity 1.6.1 and Velocity Tools 2.0-beta3
1550Apache UIMA 2.3.1-SNAPSHOT
1551
1552
1553Upgrading from Solr 1.4
1554----------------------
1555
1556* The Lucene index format has changed and as a result, once you upgrade,
1557  previous versions of Solr will no longer be able to read your indices.
1558  In a master/slave configuration, all searchers/slaves should be upgraded
1559  before the master.  If the master were to be updated first, the older
1560  searchers would not be able to read the new index format.
1561
1562* The Solr JavaBin format has changed as of Solr 3.1. If you are using the
1563  JavaBin format, you will need to upgrade your SolrJ client. (SOLR-2034)
1564
1565* The experimental ALIAS command has been removed (SOLR-1637)
1566
1567* Using solr.xml is recommended for single cores also (SOLR-1621)
1568
1569* Old syntax of <highlighting> configuration in solrconfig.xml
1570  is deprecated (SOLR-1696)
1571
1572* The deprecated HTMLStripReader, HTMLStripWhitespaceTokenizerFactory and
1573  HTMLStripStandardTokenizerFactory were removed. To strip HTML tags,
1574  HTMLStripCharFilter should be used instead, and it works with any
1575  Tokenizer of your choice.  (SOLR-1657)
1576
1577* Field compression is no longer supported. Fields that were formerly
1578  compressed will be uncompressed as index segments are merged. For
1579  shorter fields, this may actually be an improvement, as the compression
1580  used was not very good for short text. Some indexes may get larger though.
1581
1582* SOLR-1845: The TermsComponent response format was changed so that the
1583  "terms" container is a map instead of a named list.  This affects
1584   response formats like JSON, but not XML. (yonik)
1585
1586* SOLR-1876: All Analyzers and TokenStreams are now final to enforce
1587  the decorator pattern.  (rmuir, uschindler)
1588
1589* LUCENE-2608: Added the ability to specify the accuracy on a per request basis.
1590  It is recommended that implementations of SolrSpellChecker should change over to the new SolrSpellChecker
1591  methods using the new SpellingOptions class, but are not required to.  While this change is
1592  backward compatible, the trunk version of Solr has already dropped support for all but the SpellingOptions method. (gsingers)
1593
1594* readercycle script was removed. (SOLR-2046)
1595
1596* In previous releases, sorting or evaluating function queries on
1597  fields that were "multiValued" (either by explicit declaration in
1598  schema.xml or by implict behavior because the "version" attribute on
1599  the schema was less then 1.2) did not generally work, but it would
1600  sometimes silently act as if it succeeded and order the docs
1601  arbitrarily.  Solr will now fail on any attempt to sort, or apply a
1602  function to, multi-valued fields
1603
1604* The DataImportHandler jars are no longer included in the solr
1605  WAR and should be added in Solr's lib directory, or referenced
1606  via the <lib> directive in solrconfig.xml.
1607
1608
1609Detailed Change List
1610----------------------
1611
1612New Features
1613----------------------
1614
1615* SOLR-1302: Added several new distance based functions, including
1616  Great Circle (haversine), Manhattan, Euclidean and String (using the
1617  StringDistance methods in the Lucene spellchecker).
1618  Also added geohash(), deg() and rad() convenience functions.
1619  See http://wiki.apache.org/solr/FunctionQuery. (gsingers)
1620
1621* SOLR-1553: New dismax parser implementation (accessible as "edismax")
1622  that supports full lucene syntax, improved reserved char escaping,
1623  fielded queries, improved proximity boosting, and improved stopword
1624  handling. Note: status is experimental for now. (yonik)
1625
1626* SOLR-1574: Add many new functions from java Math (e.g. sin, cos) (yonik)
1627
1628* SOLR-1569: Allow functions to take in literal strings by modifying the
1629  FunctionQParser and adding LiteralValueSource (gsingers)
1630
1631* SOLR-1571: Added unicode collation support though Lucene's CollationKeyFilter
1632  (Robert Muir via shalin)
1633
1634* SOLR-785: Distributed Search support for SpellCheckComponent
1635  (Matthew Woytowitz, shalin)
1636
1637* SOLR-1625: Add regexp support for TermsComponent (Uri Boness via noble)
1638
1639* SOLR-1297: Add sort by Function capability (gsingers, yonik)
1640
1641* SOLR-1139: Add TermsComponent Query and Response Support in SolrJ (Matt Weber via shalin)
1642
1643* SOLR-1177: Distributed Search support for TermsComponent (Matt Weber via shalin)
1644
1645* SOLR-1621, SOLR-1722: Allow current single core deployments to be specified by solr.xml (Mark Miller , noble)
1646
1647* SOLR-1532: Allow StreamingUpdateSolrServer to use a provided HttpClient (Gabriele Renzi via shalin)
1648
1649* SOLR-1653: Add PatternReplaceCharFilter (koji)
1650
1651* SOLR-1131: FieldTypes can now output multiple Fields per Type and still be searched.  This can be handy for hiding the details of a particular
1652  implementation such as in the spatial case. (Chris Mattmann, shalin, noble, gsingers, yonik)
1653
1654* SOLR-1586: Add support for Geohash and Spatial Tile FieldType (Chris Mattmann, gsingers)
1655
1656* SOLR-1697: PluginInfo should load plugins w/o class attribute also (noble)
1657
1658* SOLR-1268: Incorporate FastVectorHighlighter (koji)
1659
1660* SOLR-1750: SolrInfoMBeanHandler added for simpler programmatic access
1661  to info currently available from registry.jsp and stats.jsp
1662  (ehatcher, hossman)
1663
1664* SOLR-1815: SolrJ now preserves the order of facet queries. (yonik)
1665
1666* SOLR-1677: Add support for choosing the Lucene Version for Lucene components within
1667  Solr. (Uwe Schindler, Mark Miller)
1668
1669* SOLR-1379: Add RAMDirectoryFactory for non-persistent in memory index storage.
1670  (Alex Baranov via yonik)
1671
1672* SOLR-1857: Synced Solr analysis with Lucene 3.1. Added KeywordMarkerFilterFactory
1673  and StemmerOverrideFilterFactory, which can be used to tune stemming algorithms.
1674  Added factories for Bulgarian, Czech, Hindi, Turkish, and Wikipedia analysis. Improved the
1675  performance of SnowballPorterFilterFactory.  (rmuir)
1676
1677* SOLR-1657: Converted remaining TokenStreams to the Attributes-based API. All Solr
1678  TokenFilters now support custom Attributes, and some have improved performance:
1679  especially WordDelimiterFilter and CommonGramsFilter.  (rmuir, cmale, uschindler)
1680
1681* SOLR-1740: ShingleFilterFactory supports the "minShingleSize" and "tokenSeparator"
1682  parameters for controlling the minimum shingle size produced by the filter, and
1683  the separator string that it uses, respectively.  (Steven Rowe via rmuir)
1684
1685* SOLR-744: ShingleFilterFactory supports the "outputUnigramsIfNoShingles"
1686  parameter, to output unigrams if the number of input tokens is fewer than
1687  minShingleSize, and no shingles can be generated.
1688  (Chris Harris via Steven Rowe)
1689
1690* SOLR-1923: PhoneticFilterFactory now has support for the
1691  Caverphone algorithm. (rmuir)
1692
1693* SOLR-1957: The VelocityResponseWriter contrib moved to core.
1694       Example search UI now available at http://localhost:8983/solr/browse
1695       (ehatcher)
1696
1697* SOLR-1974: Add LimitTokenCountFilterFactory. (koji)
1698
1699* SOLR-1966: QueryElevationComponent can now return just the included results in the elevation file (gsingers, yonik)
1700
1701* SOLR-1556: TermVectorComponent now supports per field overrides.  Also, it now throws an error
1702 if passed in fields do not exist and warnings
1703  if fields that do not have term vector options (termVectors, offsets, positions)
1704   that align with the schema declaration. It also
1705    will now return warnings about (gsingers)
1706
1707* SOLR-1985: FastVectorHighlighter: add wrapper class for Lucene's SingleFragListBuilder (koji)
1708
1709* SOLR-1984: Add HyphenationCompoundWordTokenFilterFactory. (PB via rmuir)
1710
1711* SOLR-397: Date Faceting now supports a "facet.date.include" param
1712  for specifying when the upper & lower end points of computed date
1713  ranges should be included in the range.  Legal values are: "all",
1714  "lower", "upper", "edge", and "outer".  For backwards compatibility
1715  the default value is the set: [lower,upper,edge], so that all ranges
1716  between start and end are inclusive of their endpoints, but the
1717  "before" and "after" ranges are not.
1718
1719* SOLR-945: JSON update handler that accepts add, delete, commit
1720  commands in JSON format. (Ryan McKinley, yonik)
1721
1722* SOLR-2015: Add a boolean attribute autoGeneratePhraseQueries to TextField.
1723  autoGeneratePhraseQueries="true" (the default) causes the query parser to
1724  generate phrase queries if multiple tokens are generated from a single
1725  non-quoted analysis string.  For example WordDelimiterFilter splitting text:pdp-11
1726  will cause the parser to generate text:"pdp 11" rather than (text:PDP OR text:11).
1727  Note that autoGeneratePhraseQueries="true" tends to not work well for non whitespace
1728  delimited languages. (yonik)
1729
1730* SOLR-1925: Add CSVResponseWriter (use wt=csv) that returns the list of documents
1731  in CSV format. (Chris Mattmann, yonik)
1732
1733* SOLR-1240: "Range Faceting" has been added.  This is a generalization
1734  of the existing "Date Faceting" logic so that it now supports any
1735  all stock numeric field types that support range queries in addition
1736  to dates. facet.date is now deprecated in favor of this generalized mechanism.
1737  (Gijs Kunze, hossman)
1738
1739* SOLR-2021: Add SolrEncoder plugin to Highlighter. (koji)
1740
1741* SOLR-2030: Make FastVectorHighlighter use of SolrEncoder. (koji)
1742
1743* SOLR-2053: Add support for custom comparators in Solr spellchecker, per LUCENE-2479 (gsingers)
1744
1745* SOLR-2049: Add hl.multiValuedSeparatorChar for FastVectorHighlighter, per LUCENE-2603. (koji)
1746
1747* SOLR-2059: Add "types" attribute to WordDelimiterFilterFactory, which
1748  allows you to customize how WordDelimiterFilter tokenizes text with
1749  a configuration file.  (Peter Karich, rmuir)
1750
1751* SOLR-2099: Add ability to throttle rsync based replication using rsync option --bwlimit.
1752  (Brandon Evans via koji)
1753
1754* SOLR-1316: Create autosuggest component.
1755   (Ankul Garg, Jason Rutherglen, Shalin Shekhar Mangar, Grant Ingersoll, Robert Muir, ab)
1756
1757* SOLR-1568: Added "native" filtering support for PointType, GeohashField.  Added LatLonType with filtering support too.  See
1758             http://wiki.apache.org/solr/SpatialSearch and the example.  Refactored some items in Lucene spatial.
1759             Removed SpatialTileField as the underlying CartesianTier is broken beyond repair and is going to be moved. (gsingers)
1760
1761* SOLR-2128: Full parameter substitution for function queries.
1762  Example: q=add($v1,$v2)&v1=mul(popularity,5)&v2=20.0
1763  (yonik)
1764
1765* SOLR-2133: Function query parser can now parse multiple comma separated
1766  value sources.  It also now fails if there is extra unexpected text
1767  after parsing the functions, instead of silently ignoring it.
1768  This allows expressions like q=dist(2,vector(1,2),$pt)&pt=3,4   (yonik)
1769
1770* SOLR-2157: Suggester should return alpha-sorted results when onlyMorePopular=false (ab)
1771
1772* SOLR-2010: Added ability to verify that spell checking collations have
1773   actual results in the index.  (James Dyer via gsingers)
1774
1775* SOLR-2188: Added "maxTokenLength" argument to the factories for ClassicTokenizer,
1776  StandardTokenizer, and UAX29URLEmailTokenizer. (Steven Rowe)
1777
1778* SOLR-2129: Added a Solr module for dynamic metadata extraction/indexing with Apache UIMA.
1779  See contrib/uima/README.txt for more information.  (Tommaso Teofili via rmuir)
1780
1781* SOLR-2325: Allow tagging and exclusion of main query for faceting. (yonik)
1782
1783* SOLR-2263: Add ability for RawResponseWriter to stream binary files as well as
1784  text files.  (Eric Pugh via yonik)
1785
1786* SOLR-860: Add debug output for MoreLikeThis. (koji)
1787
1788* SOLR-1057: Add PathHierarchyTokenizerFactory. (ryan, koji)
1789
1790Optimizations
1791----------------------
1792
1793* SOLR-1679: Don't build up string messages in SolrCore.execute unless they
1794  are necessary for the current log level.
1795  (Fuad Efendi and hossman)
1796
1797* SOLR-1874: Optimize PatternReplaceFilter for better performance. (rmuir, uschindler)
1798
1799* SOLR-1968: speed up initial filter cache population for facet.method=enum and
1800  also big terms for multi-valued facet.method=fc.  The resulting speedup
1801  for the first facet request is anywhere from 30% to 32x, depending on how many
1802  terms are in the field and how many documents match per term.  (yonik)
1803
1804* SOLR-2089: Speed up UnInvertedField faceting (facet.method=fc for
1805  multi-valued fields) when facet.limit is both high, and a high enough
1806  percentage of the number of unique terms in the field.  Extreme cases
1807  yield speedups over 3x. (yonik)
1808
1809* SOLR-2046: add common functions to scripts-util. (koji)
1810
1811Bug Fixes
1812----------------------
1813* SOLR-1769: Solr 1.4 Replication - Repeater throwing NullPointerException (Jörgen Rydenius via noble)
1814
1815* SOLR-1432: Make the new ValueSource.getValues(context,reader) delegate
1816  to the original ValueSource.getValues(reader) so custom sources
1817  will work. (yonik)
1818
1819* SOLR-1572: FastLRUCache correctly implemented the LRU policy only
1820  for the first 2B accesses. (yonik)
1821
1822* SOLR-1582: copyField was ignored for BinaryField types (gsingers)
1823
1824* SOLR-1563: Binary fields, including trie-based numeric fields, caused null
1825  pointer exceptions in the luke request handler. (yonik)
1826
1827* SOLR-1577: The example solrconfig.xml defaulted to a solr data dir
1828  relative to the current working directory, even if a different solr home
1829  was being used.  The new behavior changes the default to a zero length
1830  string, which is treated the same as if no dataDir had been specified,
1831  hence the "data" directory under the solr home will be used.  (yonik)
1832
1833* SOLR-1584: SolrJ - SolrQuery.setIncludeScore() incorrectly added
1834  fl=score to the parameter list instead of appending score to the
1835  existing field list. (yonik)
1836
1837* SOLR-1580: Solr Configuration ignores 'mergeFactor' parameter, always
1838  uses Lucene default. (Lance Norskog via Mark Miller)
1839
1840* SOLR-1593: ReverseWildcardFilter didn't work for surrogate pairs
1841  (i.e. code points outside of the BMP), resulting in incorrect
1842  matching.  This change requires reindexing for any content with
1843  such characters.  (Robert Muir, yonik)
1844
1845* SOLR-1596: A rollback operation followed by the shutdown of Solr
1846  or the close of a core resulted in a warning:
1847  "SEVERE: SolrIndexWriter was not closed prior to finalize()" although
1848  there were no other consequences. (yonik)
1849
1850* SOLR-1595: StreamingUpdateSolrServer used the platform default character
1851  set when streaming updates, rather than using UTF-8 as the HTTP headers
1852  indicated, leading to an encoding mismatch. (hossman, yonik)
1853
1854* SOLR-1587: A distributed search request with fl=score, didn't match
1855  the behavior of a non-distributed request since it only returned
1856  the id,score fields instead of all fields in addition to score. (yonik)
1857
1858* SOLR-1601: Schema browser does not indicate presence of charFilter. (koji)
1859
1860* SOLR-1615: Backslash escaping did not work in quoted strings
1861  for local param arguments. (Wojtek Piaseczny, yonik)
1862
1863* SOLR-1628: log contains incorrect number of adds and deletes.
1864  (Thijs Vonk via yonik)
1865
1866* SOLR-343: Date faceting now respects facet.mincount limiting
1867  (Uri Boness, Raiko Eckstein via hossman)
1868
1869* SOLR-1624: Highlighter only highlights values from the first field  value
1870  in a multivalued field when term positions (term vectors) are stored.
1871  (Chris Harris via yonik)
1872
1873* SOLR-1635: Fixed error message when numeric values can't be parsed by
1874  DOMUtils - notably for plugin init params in solrconfig.xml.
1875  (hossman)
1876
1877* SOLR-1651: Fixed Incorrect dataimport handler package name in SolrResourceLoader
1878  (Akshay Ukey via shalin)
1879
1880* SOLR-1660: CapitalizationFilter crashes if you use the maxWordCountOption
1881  (Robert Muir via shalin)
1882
1883* SOLR-1667: PatternTokenizer does not reset attributes such as positionIncrementGap
1884  (Robert Muir via shalin)
1885
1886* SOLR-1711: SolrJ - StreamingUpdateSolrServer had a race condition that
1887  could halt the streaming of documents. The original patch to fix this
1888  (never officially released) introduced another hanging bug due to
1889  connections not being released.
1890  (Attila Babo, Erik Hetzner, Johannes Tuchscherer via yonik)
1891
1892* SOLR-1748, SOLR-1747, SOLR-1746, SOLR-1745, SOLR-1744: Streams and Readers
1893  retrieved from ContentStreams are not closed in various places, resulting
1894  in file descriptor leaks.
1895  (Christoff Brill, Mark Miller)
1896
1897* SOLR-1753: StatsComponent throws NPE when getting statistics for facets in distributed search
1898  (Janne Majaranta via koji)
1899
1900* SOLR-1736:In the slave , If 'mov'ing file does not succeed , copy the file (noble)
1901
1902* SOLR-1579: Fixes to XML escaping in stats.jsp
1903  (David Bowen and hossman)
1904
1905* SOLR-1777: fieldTypes with sortMissingLast=true or sortMissingFirst=true can
1906  result in incorrectly sorted results.  (yonik)
1907
1908* SOLR-1798: Small memory leak (~100 bytes) in fastLRUCache for every
1909  commit. (yonik)
1910
1911* SOLR-1823: Fixed XMLResponseWriter (via XMLWriter) so it no longer throws
1912  a ClassCastException when a Map containing a non-String key is used.
1913  (Frank Wesemann, hossman)
1914
1915* SOLR-1797: fix ConcurrentModificationException and potential memory
1916  leaks in ResourceLoader. (yonik)
1917
1918* SOLR-1850: change KeepWordFilter so a new word set is not created for
1919  each instance (John Wang via yonik)
1920
1921* SOLR-1706: fixed WordDelimiterFilter for certain combinations of options
1922  where it would output incorrect tokens. (Robert Muir, Chris Male)
1923
1924* SOLR-1936: The JSON response format needed to escape unicode code point
1925  U+2028 - 'LINE SEPARATOR' (Robert Hofstra, yonik)
1926
1927* SOLR-1914: Change the JSON response format to output float/double
1928  values of NaN,Infinity,-Infinity as strings. (yonik)
1929
1930* SOLR-1948: PatternTokenizerFactory should use parent's args (koji)
1931
1932* SOLR-1870: Indexing documents using the 'javabin' format no longer
1933  fails with a ClassCastException whenSolrInputDocuments contain field
1934  values which are Collections or other classes that implement
1935  Iterable. (noble, hossman)
1936
1937* SOLR-1981: Solr will now fail correctly if solr.xml attempts to
1938  specify multiple cores that have the same name (hossman)
1939
1940* SOLR-1791: Fix messed up core names on admin gui (yonik via koji)
1941
1942* SOLR-1995: Change date format from "hour in am/pm" to "hour in day"
1943  in CoreContainer and SnapShooter. (Hayato Ito, koji)
1944
1945* SOLR-2008: avoid possible RejectedExecutionException w/autoCommit
1946  by making SolreCore close the UpdateHandler before closing the
1947  SearchExecutor.  (NarasimhaRaju, hossman)
1948
1949* SOLR-2036: Avoid expensive fieldCache ram estimation for the
1950  admin stats page. (yonik)
1951
1952* SOLR-2047: ReplicationHandler should accept bool type for enable flag. (koji)
1953
1954* SOLR-1630: Fix spell checking collation issue related to token positions (rmuir, gsingers)
1955
1956* SOLR-2100: The replication handler backup command didn't save the commit
1957  point and hence could fail when a newer commit caused the older commit point
1958  to be removed before it was finished being copied.  This did not affect
1959  normal master/slave replication.  (Peter Sturge via yonik)
1960
1961* SOLR-2114: Fixed parsing error in hsin function.  The function signature has changed slightly. (gsingers)
1962
1963* SOLR-2083: SpellCheckComponent misreports suggestions when distributed (James Dyer via gsingers)
1964
1965* SOLR-2111: Change exception handling in distributed faceting to work more
1966  like non-distributed faceting, change facet_counts/exception from a String
1967  to a List<String> to enable listing all exceptions that happened, and
1968  prevent an exception in one facet command from affecting another
1969  facet command. (yonik)
1970
1971* SOLR-2110: Remove the restriction on names for local params
1972  substitution/dereferencing.  Properly encode local params in
1973  distributed faceting.  (yonik)
1974
1975* SOLR-2135: Fix behavior of ConcurrentLRUCache when asking for
1976  getLatestAccessedItems(0) or getOldestAccessedItems(0).
1977  (David Smiley via hossman)
1978
1979* SOLR-2148: Highlighter doesn't support q.alt. (koji)
1980
1981* SOLR-2180: It was possible for EmbeddedSolrServer to leave searchers
1982  open if a request threw an exception. (yonik)
1983
1984* SOLR-2173: Suggester should always rebuild Lookup data if Lookup.load fails. (ab)
1985
1986* SOLR-2081: BaseResponseWriter.isStreamingDocs causes
1987  SingleResponseWriter.end to be called 2x
1988  (Chris A. Mattmann via hossman)
1989
1990* SOLR-2219: The init() method of every SolrRequestHandler was being
1991  called twice. (ambikeshwar singh and hossman)
1992
1993* SOLR-2285: duplicate SolrEventListeners no longer created (hossman)
1994
1995* SOLR-1993: fix String cast assumption in JavaBinCodec - specific
1996  addresses "commitWithin" option on Update requests.
1997  (noble, hossman, and Maxim Valyanskiy)
1998
1999* SOLR-2261: fix velocity template layout.vm that referred to an older
2000  version of jquery.  (Eric Pugh via rmuir)
2001
2002* SOLR-2307: fix bug in PHPSerializedResponseWriter (wt=phps) when
2003  dealing with SolrDocumentList objects -- ie: sharded queries.
2004  (Antonio Verni via hossman)
2005
2006* SOLR-2127: Fixed serialization of default core and indentation of solr.xml when serializing.
2007  (Ephraim Ofir, Mark Miller)
2008
2009* SOLR-2320: Fixed ReplicationHandler detail reporting for masters
2010  (hossman)
2011
2012* SOLR-482: Provide more exception handling in CSVLoader (gsingers)
2013
2014* SOLR-1283: HTMLStripCharFilter sometimes threw a "Mark Invalid" exception.
2015  (Julien Coloos, hossman, yonik)
2016
2017* SOLR-2085: Improve SolrJ behavior when FacetComponent comes before
2018  QueryComponent (Tomas Salfischberger via hossman)
2019
2020* SOLR-1940: Fix SolrDispatchFilter behavior when Content-Type is
2021  unknown (Lance Norskog and hossman)
2022
2023* SOLR-1983: snappuller fails when modifiedConfFiles is not empty and
2024  full copy of index is needed. (Alexander Kanarsky via yonik)
2025
2026* SOLR-2156: SnapPuller fails to clean Old Index Directories on Full Copy
2027  (Jayendra Patil via yonik)
2028
2029* SOLR-96: Fix XML parsing in XMLUpdateRequestHandler and
2030  DocumentAnalysisRequestHandler to respect charset from XML file and only
2031  use HTTP header's "Content-Type" as a "hint". (uschindler)
2032
2033* SOLR-2339: Fix sorting to explicitly generate an error if you
2034  attempt to sort on a multiValued field. (hossman)
2035
2036* SOLR-2348: Fix field types to explicitly generate an error if you
2037  attempt to get a ValueSource for a multiValued field. (hossman)
2038
2039* SOLR-2380: Distributed faceting could miss values when facet.sort=index
2040  and when facet.offset was greater than 0. (yonik)
2041
2042* SOLR-1656: XIncludes and other HREFs in XML files loaded by ResourceLoader
2043  are fixed to be resolved using the URI standard (RFC 2396). The system
2044  identifier is no longer a plain filename with path, it gets initialized
2045  using a custom URI scheme "solrres:". This scheme is resolved using a
2046  EntityResolver that utilizes ResourceLoader
2047  (org.apache.solr.common.util.SystemIdResolver). This makes all relative
2048  pathes in Solr's config files behave like expected. This change
2049  introduces some backwards breaks in the API: Some config classes
2050  (Config, SolrConfig, IndexSchema) were changed to take
2051  org.xml.sax.InputSource instead of InputStream. There may also be some
2052  backwards breaks in existing config files, it is recommended to check
2053  your config files / XSLTs and replace all XIncludes/HREFs that were
2054  hacked to use absolute paths to use relative ones. (uschindler)
2055
2056* SOLR-309: Fix FieldType so setting an analyzer on a FieldType that
2057  doesn't expect it will generate an error.  Practically speaking this
2058  means that Solr will now correctly generate an error on
2059  initialization if the schema.xml contains an analyzer configuration
2060  for a fieldType that does not use TextField.  (hossman)
2061
2062* SOLR-2192: StreamingUpdateSolrServer.blockUntilFinished was not
2063  thread safe and could throw an exception. (yonik)
2064
2065Other Changes
2066----------------------
2067
2068* SOLR-1602: Refactor SOLR package structure to include o.a.solr.response
2069  and move QueryResponseWriters in there
2070  (Chris A. Mattmann, ryan, hoss)
2071
2072* SOLR-1516: Addition of an abstract BaseResponseWriter class to simplify the
2073  development of QueryResponseWriter implementations.
2074  (Chris A. Mattmann via noble)
2075
2076* SOLR-1592: Refactor XMLWriter startTag to allow arbitrary attributes to be written
2077  (Chris A. Mattmann via noble)
2078
2079* SOLR-1561: Added Lucene 2.9.1 spatial contrib jar to lib. (gsingers)
2080
2081* SOLR-1570: Log warnings if uniqueKey is multi-valued or not stored (hossman, shalin)
2082
2083* SOLR-1558: QueryElevationComponent only works if the uniqueKey field is
2084  implemented using StrField.  In previous versions of Solr no warning or
2085  error would be generated if you attempted to use QueryElevationComponent,
2086  it would just fail in unexpected ways.  This has been changed so that it
2087  will fail with a clear error message on initialization. (hossman)
2088
2089* SOLR-1611: Added Lucene 2.9.1 collation contrib jar to lib (shalin)
2090
2091* SOLR-1608: Extract base class from TestDistributedSearch to make
2092  it easy to write test cases for other distributed components. (shalin)
2093
2094* Upgraded to Lucene 2.9-dev r888785 (shalin)
2095
2096* SOLR-1610: Generify SolrCache (Jason Rutherglen via shalin)
2097
2098* SOLR-1637: Remove ALIAS command
2099
2100* SOLR-1662: Added Javadocs in BufferedTokenStream and fixed incorrect cloning
2101  in TestBufferedTokenStream (Robert Muir, Uwe Schindler via shalin)
2102 
2103* SOLR-1674: Improve analysis tests and cut over to new TokenStream API.
2104  (Robert Muir via Mark Miller)
2105
2106* SOLR-1661: Remove adminCore from CoreContainer . removed deprecated methods setAdminCore(), getAdminCore() (noble)
2107
2108* SOLR-1704: Google collections moved from clustering to core (noble)
2109
2110* SOLR-1268: Add Lucene 2.9-dev r888785 FastVectorHighlighter contrib jar to lib. (koji)
2111
2112* SOLR-1538: Reordering of object allocations in ConcurrentLRUCache to eliminate
2113  (an extremely small) potential for deadlock.
2114  (gabriele renzi via hossman)
2115 
2116* SOLR-1588: Removed some very old dead code.
2117  (Chris A. Mattmann via hossman)
2118 
2119* SOLR-1696 : Deprecate old <highlighting> syntax and move configuration to HighlightComponent (noble)
2120
2121* SOLR-1727: SolrEventListener should extend NamedListInitializedPlugin (noble)
2122
2123* SOLR-1771: Improved error message when StringIndex cannot be initialized
2124  for a function query (hossman)
2125
2126* SOLR-1695: Improved error messages when adding a document that does not
2127  contain exactly one value for the uniqueKey field (hossman)
2128
2129* SOLR-1776: DismaxQParser and ExtendedDismaxQParser now use the schema.xml
2130  "defaultSearchField" as the default value for the "qf" param instead of failing
2131  with an error when "qf" is not specified.  (hossman)
2132
2133* SOLR-1851: luceneAutoCommit no longer has any effect - it has been remove (Mark Miller)
2134
2135* SOLR-1865: SolrResourceLoader.getLines ignores Byte Order Markers (BOMs) at the
2136  beginning of input files, these are often created by editors such as Windows
2137  Notepad.  (rmuir, hossman)
2138
2139* SOLR-1938: ElisionFilterFactory will use a default set of French contractions
2140  if you do not supply a custom articles file.  (rmuir) 
2141 
2142* SOLR-2003: SolrResourceLoader will report any encoding errors, rather than
2143  silently using replacement characters for invalid inputs (blargy via rmuir)
2144
2145* SOLR-1804: Google collections updated to Google Guava (which is a superset of collections and contains bug fixes) (gsingers) 
2146
2147* SOLR-2034: Switch to JavaBin codec version 2. Strings are now serialized
2148  as the number of UTF-8 bytes, followed by the bytes in UTF-8. Previously
2149  Strings were serialized as the number of UTF-16 chars, followed by the
2150  bytes in Modified UTF-8. (hossman, yonik, rmuir)
2151
2152* SOLR-2013: Add mapping-FoldToASCII.txt to example conf directory.
2153  (Steven Rowe via koji)
2154 
2155* SOLR-2213: Upgrade to jQuery 1.4.3 (Erick Erickson via ryan)
2156
2157* SOLR-1826: Add unit tests for highlighting with termOffsets=true
2158  and overlapping tokens. (Stefan Oestreicher via rmuir)
2159
2160* SOLR-2340: Add version infos to message in JavaBinCodec when throwing
2161  exception. (koji)
2162
2163* SOLR-2350: Since Solr no longer requires XML files to be in UTF-8
2164  (see SOLR-96) SimplePostTool (aka: post.jar) has been improved to
2165  work with files of any mime-type or charset. (hossman)
2166
2167* SOLR-2365: Move DIH jars out of solr.war (David Smiley via yonik)
2168
2169* SOLR-2381: Include a patched version of Jetty (6.1.26 + JETTY-1340)
2170  to fix problematic UTF-8 handling for supplementary characters.
2171  (Bernd Fehling, uschindler, yonik, rmuir)
2172
2173* SOLR-2391: The preferred Content-Type for XML was changed to
2174  application/xml. XMLResponseWriter now only delivers using this
2175  type; updating documents and analyzing documents is still supported
2176  using text/xml as Content-Type, too. If you have clients that are
2177  hardcoded on text/xml as Content-Type, you have to change them.
2178  (uschindler, rmuir)
2179
2180* SOLR-2414: All ResponseWriters now use only ServletOutputStreams
2181  and wrap their own Writer around it when serializing. This fixes
2182  the bug in PHPSerializedResponseWriter that produced wrong string
2183  length if the servlet container had a broken UTF-8 encoding that was
2184  in fact CESU-8 (see SOLR-1091). The system property to enable the
2185  CESU-8 byte counting in PHPSerializesResponseWriters for broken
2186  servlet containers was therefore removed and is now ignored if set.
2187  Output is always UTF-8.  (uschindler, yonik, rmuir)
2188
2189* SOLR-141: Errors and Exceptions are formated by ResponseWriter.
2190  (Mike Sokolov, Rich Cariens, Daniel Naber, ryan)
2191
2192
2193Build
2194----------------------
2195
2196* SOLR-1522: Automated release signing process. (gsingers)
2197
2198* SOLR-1891: Make lucene-jars-to-solr fail if copying any of the jars fails, and
2199  update clean to remove the jars in that directory (Mark Miller)
2200
2201* LUCENE-2466: Commons-Codec was upgraded from 1.3 to 1.4. (rmuir)
2202
2203* SOLR-2042: Fixed some Maven deps (Drew Farris via gsingers)
2204
2205* LUCENE-2657: Switch from using Maven POM templates to full POMs when
2206  generating Maven artifacts (Steven Rowe)
2207
2208Documentation
2209----------------------
2210
2211* SOLR-1590: Javadoc for XMLWriter#startTag
2212  (Chris A. Mattmann via hossman)
2213
2214* SOLR-1792: Documented peculiar behavior of TestHarness.LocalRequestFactory
2215  (hossman)
2216
2217================== Release 1.4.0 ==================
2218Release Date:  See http://lucene.apache.org/solr for the official release date.
2219
2220Upgrading from Solr 1.3
2221-----------------------
2222
2223There is a new default faceting algorithm for multiVaued fields that should be
2224faster for most cases.  One can revert to the previous algorithm (which has
2225also been improved somewhat) by adding facet.method=enum to the request.
2226
2227Searching and sorting is now done on a per-segment basis, meaning that
2228the FieldCache entries used for sorting and for function queries are
2229created and used per-segment and can be reused for segments that don't
2230change between index updates.  While generally beneficial, this can lead
2231to increased memory usage over 1.3 in certain scenarios:
2232  1) A single valued field that was used for both sorting and faceting
2233in 1.3 would have used the same top level FieldCache entry.  In 1.4,
2234sorting will use entries at the segment level while faceting will still
2235use entries at the top reader level, leading to increased memory usage.
2236  2) Certain function queries such as ord() and rord() require a top level
2237FieldCache instance and can thus lead to increased memory usage.  Consider
2238replacing ord() and rord() with alternatives, such as function queries
2239based on ms() for date boosting.
2240
2241If you use custom Tokenizer or TokenFilter components in a chain specified in
2242schema.xml, they must support reusability.  If your Tokenizer or TokenFilter
2243maintains state, it should implement reset().  If your TokenFilteFactory does
2244not return a subclass of TokenFilter, then it should implement reset() and call
2245reset() on it's input TokenStream.  TokenizerFactory implementations must
2246now return a Tokenizer rather than a TokenStream.
2247
2248New users of Solr 1.4 will have omitTermFreqAndPositions enabled for non-text
2249indexed fields by default, which avoids indexing term frequency, positions, and
2250payloads, making the index smaller and faster.  If you are upgrading from an
2251earlier Solr release and want to enable omitTermFreqAndPositions by default,
2252change the schema version from 1.1 to 1.2 in schema.xml.  Remove any existing
2253index and restart Solr to ensure that omitTermFreqAndPositions completely takes
2254affect.
2255
2256The default QParserPlugin used by the QueryComponent for parsing the "q" param
2257has been changed, to remove support for the deprecated use of ";" as a separator
2258between the query string and the sort options when no "sort" param was used.
2259Users who wish to continue using the semi-colon based method of specifying the
2260sort options should explicitly set the defType param to "lucenePlusSort" on all
2261requests. (The simplest way to do this is by specifying it as a default param
2262for your request handlers in solrconfig.xml, see the example solrconfig.xml for
2263sample syntax.)
2264
2265If spellcheck.extendedResults=true, the response format for suggestions
2266has changed, see SOLR-1071.
2267
2268Use of the "charset" option when configuring the following Analysis
2269Factories has been deprecated and will cause a warning to be logged.
2270In future versions of Solr attempting to use this option will cause an
2271error.  See SOLR-1410 for more information.
2272 * GreekLowerCaseFilterFactory
2273 * RussianStemFilterFactory
2274 * RussianLowerCaseFilterFactory
2275 * RussianLetterTokenizerFactory
2276
2277Versions of Major Components
2278----------------------------
2279Apache Lucene 2.9.1  (r832363  on 2.9 branch)
2280Apache Tika 0.4
2281Carrot2 3.1.0
2282
2283Lucene Information
2284----------------
2285
2286Since Solr is built on top of Lucene, many people add customizations to Solr
2287that are dependent on Lucene.  Please see http://lucene.apache.org/java/2_9_0/,
2288especially http://lucene.apache.org/java/2_9_0/changes/Changes.html for more
2289information on the version of Lucene used in Solr.
2290
2291Detailed Change List
2292----------------------
2293
2294New Features
2295----------------------
2296 1. SOLR-560: Use SLF4J logging API rather then JDK logging.  The packaged .war file is
2297    shipped with a JDK logging implementation, so logging configuration for the .war should
2298    be identical to solr 1.3.  However, if you are using the .jar file, you can select
2299    which logging implementation to use by dropping a different binding. 
2300    See: http://www.slf4j.org/  (ryan)
2301
2302 2. SOLR-617: Allow configurable index deletion policy and provide a default implementation which
2303    allows deletion of commit points on various criteria such as number of commits, age of commit
2304    point and optimized status.
2305    See http://lucene.apache.org/java/2_3_2/api/org/apache/lucene/index/IndexDeletionPolicy.html
2306    (yonik, Noble Paul, Akshay Ukey via shalin)
2307
2308 3. SOLR-658: Allow Solr to load index from arbitrary directory in dataDir
2309    (Noble Paul, Akshay Ukey via shalin)
2310
2311 4. SOLR-793: Add 'commitWithin' argument to the update add command.  This behaves
2312    similar to the global autoCommit maxTime argument except that it is set for
2313    each request.  (ryan)
2314
2315 5. SOLR-670: Add support for rollbacks in UpdateHandler. This allows user to rollback all changes
2316    since the last commit. (Noble Paul, koji via shalin)
2317
2318 6. SOLR-813: Adding DoubleMetaphone Filter and Factory.  Similar to the PhoneticFilter,
2319    but this uses DoubleMetaphone specific calls (including alternate encoding)
2320    (Todd Feak via ryan)
2321
2322 7. SOLR-680: Add StatsComponent. This gets simple statistics on matched numeric fields,
2323    including: min, max, mean, median, stddev.  (koji, ryan)
2324
2325    7.1 SOLR-1380: Added support for multi-valued fields (Harish Agarwal via gsingers)
2326
2327 8. SOLR-561: Added Replication implemented in Java as a request handler. Supports index replication
2328    as well as configuration replication and exposes detailed statistics and progress information
2329    on the Admin page. Works on all platforms. (Noble Paul, yonik, Akshay Ukey, shalin)
2330
2331 9. SOLR-746: Added "omitHeader" request parameter to omit the header from the response.
2332    (Noble Paul via shalin)
2333
233410. SOLR-651: Added TermVectorComponent for serving up term vector information, plus IDF.
2335    See http://wiki.apache.org/solr/TermVectorComponent (gsingers, Vaijanath N. Rao, Noble Paul)
2336
233712. SOLR-795: SpellCheckComponent supports building indices on optimize if configured in solrconfig.xml
2338    (Jason Rennie, shalin)
2339
234013. SOLR-667: A LRU cache implementation based upon ConcurrentHashMap and other techniques to reduce
2341    contention and synchronization overhead, to utilize multiple CPU cores more effectively.
2342    (Fuad Efendi, Noble Paul, yonik via shalin)
2343
234414. SOLR-465: Add configurable DirectoryProvider so that alternate Directory
2345    implementations can be specified via solrconfig.xml.  The default
2346    DirectoryProvider will use NIOFSDirectory for better concurrency
2347    on non Windows platforms.  (Mark Miller, TJ Laurenzo via yonik)
2348
234915. SOLR-822: Add CharFilter so that characters can be filtered (e.g. character normalization)
2350    before Tokenizer/TokenFilters. (koji)
2351   
235216. SOLR-829: Allow slaves to request compressed files from master during replication
2353    (Simon Collins, Noble Paul, Akshay Ukey via shalin)
2354
235517. SOLR-877: Added TermsComponent for accessing Lucene's TermEnum capabilities.
2356    Useful for auto suggest and possibly distributed search.  Not distributed search compliant.  (gsingers)
2357    - Added mincount and maxcount options (Khee Chin via gsingers)
2358
235918. SOLR-538: Add maxChars attribute for copyField function so that the length limit for destination
2360    can be specified.
2361    (Georgios Stamatis, Lars Kotthoff, Chris Harris via koji)
2362
236319. SOLR-284: Added support for extracting content from binary documents like MS Word and PDF using Apache Tika.  See also contrib/extraction/CHANGES.txt (Eric Pugh, Chris Harris, yonik, gsingers)
2364
236520. SOLR-819: Added factories for Arabic support (gsingers)
2366
236721. SOLR-781: Distributed search ability to sort field.facet values
2368    lexicographically.  facet.sort values "true" and "false" are
2369    also deprecated and replaced with "count" and "lex".
2370    (Lars Kotthoff via yonik)
2371
237222. SOLR-821: Add support for replication to copy conf file to slave with a different name. This allows replication
2373    of solrconfig.xml
2374    (Noble Paul, Akshay Ukey via shalin)
2375
237623. SOLR-911: Add support for multi-select faceting by allowing filters to be
2377    tagged and facet commands to exclude certain filters.  This patch also
2378    added the ability to change the output key for facets in the response, and
2379    optimized distributed faceting refinement by lowering parsing overhead and
2380    by making requests and responses smaller.
2381
238224. SOLR-876: WordDelimiterFilter now supports a splitOnNumerics
2383    option, as well as a list of protected terms.
2384    (Dan Rosher via hossman)
2385
238625. SOLR-928: SolrDocument and SolrInputDocument now implement the Map<String,?>
2387    interface.  This should make plugging into other standard tools easier. (ryan)
2388
238926. SOLR-847: Enhance the snappull command in ReplicationHandler to accept masterUrl.
2390    (Noble Paul, Preetam Rao via shalin)
2391
239227. SOLR-540: Add support for globbing in field names to highlight.
2393    For example, hl.fl=*_text will highlight all fieldnames ending with
2394    _text.  (Lars Kotthoff via yonik)
2395
239628. SOLR-906: Adding a StreamingUpdateSolrServer that writes update commands to
2397    an open HTTP connection.  If you are using solrj for bulk update requests
2398    you should consider switching to this implementaion.  However, note that
2399    the error handling is not immediate as it is with the standard SolrServer.
2400    (ryan)
2401
240229. SOLR-865: Adding support for document updates in binary format and corresponding support in Solrj client.
2403    (Noble Paul via shalin)
2404
240530. SOLR-763: Add support for Lucene's PositionFilter (Mck SembWever via shalin)
2406
240731. SOLR-966: Enhance the map() function query to take in an optional default value (Noble Paul, shalin)
2408
240932. SOLR-820: Support replication on startup of master with new index. (Noble Paul, Akshay Ukey via shalin)
2410
241133. SOLR-943: Make it possible to specify dataDir in solr.xml and accept the dataDir as a request parameter for
2412    the CoreAdmin create command. (Noble Paul via shalin)
2413
241434. SOLR-850: Addition of timeouts for distributed searching. Configurable through 'shard-socket-timeout' and
2415    'shard-connection-timeout' parameters in SearchHandler. (Patrick O'Leary via shalin)
2416
241735. SOLR-799: Add support for hash based exact/near duplicate document
2418    handling. (Mark Miller, yonik)
2419
242036. SOLR-1026: Add protected words support to SnowballPorterFilterFactory (ehatcher)
2421
242237. SOLR-739: Add support for OmitTf (Mark Miller via yonik)
2423
242438. SOLR-1046: Nested query support for the function query parser
2425    and lucene query parser (the latter existed as an undocumented
2426    feature in 1.3) (yonik)
2427
242839. SOLR-940: Add support for Lucene's Trie Range Queries by providing new FieldTypes in
2429    schema for int, float, long, double and date.  Single-valued Trie based
2430    fields with a precisionStep will index multiple precisions and enable
2431    faster range queries.  (Uwe Schindler, yonik, shalin)
2432
243340. SOLR-1038: Enhance CommonsHttpSolrServer to add docs in batch using an iterator API (Noble Paul via shalin)
2434
243541. SOLR-844: A SolrServer implementation to front-end multiple solr servers and provides load balancing and failover
2436    support (Noble Paul, Mark Miller, hossman via shalin)
2437
243842. SOLR-939: ValueSourceRangeFilter/Query - filter based on values in a FieldCache entry or on any arbitrary function of field values. (yonik)
2439
244043. SOLR-1095: Fixed performance problem in the StopFilterFactory and simplified code.  Added tests as well.  (gsingers)
2441
244244. SOLR-1096: Introduced httpConnTimeout and httpReadTimeout in replication slave configuration to avoid stalled
2443    replication. (Jeff Newburn, Noble Paul, shalin)
2444
244545. SOLR-1115: <bool>on</bool> and <bool>yes</bool> work as expected in solrconfig.xml. (koji)
2446
244746. SOLR-1099:  A FieldAnalysisRequestHandler which provides the analysis functionality of the web admin page as
2448    a service. The AnalysisRequestHandler is renamed to DocumentAnalysisRequestHandler which is enhanced with
2449    query analysis and showMatch support. AnalysisRequestHandler is now deprecated. Support for both
2450    FieldAnalysisRequestHandler and DocumentAnalysisRequestHandler is also provided in the Solrj client.
2451    (Uri Boness, shalin)
2452
245347. SOLR-1106: Made CoreAdminHandler Actions pluggable so that additional actions may be plugged in or the existing
2454    ones can be overridden if needed. (Kay Kay, Noble Paul, shalin)
2455
245648. SOLR-1124: Add a top() function query that causes it's argument to
2457    have it's values derived from the top level IndexReader, even when
2458    invoked from a sub-reader.  top() is implicitly used for the
2459    ord() and rord() functions.  (yonik)
2460
246149. SOLR-1110: Support sorting on trie fields with Distributed Search. (Mark Miller, Uwe Schindler via shalin)
2462
246350. SOLR-1121: CoreAdminhandler should not need a core  . This makes it possible to start a Solr server w/o a core .(noble)
2464
246551. SOLR-769: Added support for clustering in contrib/clustering.  See http://wiki.apache.org/solr/ClusteringComponent for more info.  (gsingers, Stanislaw Osinski)
2466
246752. SOLR-1175: disable/enable replication on master side. added two commands 'enableReplication' and 'disableReplication' (noble)
2468
246953. SOLR-1179: DocSets can now be used as Lucene Filters via
2470    DocSet.getTopFilter() (yonik)
2471
247254. SOLR-1116: Add a Binary FieldType (noble)
2473
247455. SOLR-1051: Support the merge of multiple indexes as a CoreAdmin and an update command (Ning Li via shalin)
2475
247656. SOLR-1152: Snapshoot on ReplicationHandler should accept location as a request parameter (shalin)
2477
247857. SOLR-1204: Enhance SpellingQueryConverter to handle UTF-8 instead of ASCII only.
2479    Use the NMTOKEN syntax for matching field names.
2480    (Michael Ludwig, shalin)
2481
248258. SOLR-1189: Support providing username and password for basic HTTP authentication in Java replication
2483    (Matthew Gregg, shalin)
2484   
248559. SOLR-243: Add configurable IndexReaderFactory so that alternate IndexReader implementations
2486    can be specified via solrconfig.xml. Note that using a custom IndexReader may be incompatible
2487    with ReplicationHandler (see comments in SOLR-1366). This should be treated as an experimental feature.
2488    (Andrzej Bialecki, hossman, Mark Miller, John Wang)
2489   
249060. SOLR-1214: differentiate between solr home and instanceDir .deprecates the method SolrResourceLoader#locateInstanceDir()
2491    and it is renamed to locateSolrHome (noble)
2492
249361. SOLR-1216 :  disambiguate the replication command names. 'snappull' becomes 'fetchindex' 'abortsnappull' becomes 'abortfetch' (noble)
2494 
249562. SOLR-1145: Add capability to specify an infoStream log file for the underlying Lucene IndexWriter in solrconfig.xml.
2496    This is an advanced debug log file that can be used to aid developers in fixing IndexWriter bugs. See the commented
2497    out example in the example solrconfig.xml under the indexDefaults section.
2498          (Chris Harris, Mark Miller)
2499
250063. SOLR-1256: Show the output of CharFilters in analysis.jsp. (koji)
2501
250264. SOLR-1266: Added stemEnglishPossessive option (default=true) to WordDelimiterFilter
2503    that allows disabling of english possessive stemming (removal of trailing 's from tokens)
2504    (Robert Muir via yonik)
2505
250665. SOLR-1237: firstSearcher and newSearcher can now be identified via the CommonParams.EVENT (evt) parameter
2507    in a request.  This allows a RequestHandler or SearchComponent to know when a newSearcher or firstSearcher
2508    event happened.  QuerySenderListender is the only implementation in Solr that implements this, but outside
2509    implementations may wish to.  See the AbstractSolrEventListener for a helper method. (gsingers)
2510
251166. SOLR-1343: Added HTMLStripCharFilter and marked HTMLStripReader, HTMLStripWhitespaceTokenizerFactory and
2512    HTMLStripStandardTokenizerFactory deprecated. To strip HTML tags, HTMLStripCharFilter can be used
2513    with an arbitrary Tokenizer. (koji)
2514
251567. SOLR-1275: Add expungeDeletes to DirectUpdateHandler2 (noble)
2516
251768. SOLR-1372: Enhance FieldAnalysisRequestHandler to accept field value from content stream (ehatcher)
2518
251969. SOLR-1370: Show the output of CharFilters in FieldAnalysisRequestHandler (koji)
2520
252170. SOLR-1373: Add Filter query to admin/form.jsp
2522    (Jason Rutherglen via hossman)
2523
252471. SOLR-1368: Add ms() function query for getting milliseconds from dates and for
2525    high precision date subtraction, add sub() for subtracting other arguments.
2526    (yonik)
2527
252872. SOLR-1156: Sort TermsComponent results by frequency (Matt Weber via yonik)
2529
253073. SOLR-1335 : load core properties from a properties file (noble)
2531
253274. SOLR-1385 : Add an 'enable' attribute to all plugins  (noble)
2533
253475. SOLR-1414 : implicit core properties are not set for single core  (noble)
2535
253676. SOLR-659 : Adds shards.start and shards.rows to distributed search
2537    to allow more efficient bulk queries (those that retrieve many or all
2538    documents).  (Brian Whitman via yonik)
2539
254077. SOLR-1321: Add better support for efficient wildcard handling (Andrzej Bialecki, Robert Muir, gsingers)
2541
254278. SOLR-1326 : New interface PluginInfoInitialized for all types of plugin (noble)
2543
254479. SOLR-1447 : Simple property injection. <mergePolicy> & <mergeScheduler> syntaxes are now deprecated
2545    (Jason Rutherglen, noble)
2546
254780. SOLR-908 : CommonGramsFilterFactory/CommonGramsQueryFilterFactory for
2548    speeding up phrase queries containing common words by indexing
2549    n-grams and using them at query time.
2550    (Tom Burton-West, Jason Rutherglen via yonik)
2551   
255281. SOLR-1292: Add FieldCache introspection to stats.jsp and JMX Monitoring via
2553    a new SolrFieldCacheMBean.  (hossman)
2554
255582. SOLR-1167: Solr Config now supports XInclude for XML engines that can support it. (Bryan Talbot via gsingers)
2556
255783. SOLR-1478: Enable sort by Lucene docid.  (ehatcher)
2558
255984. SOLR-1449: Add <lib> elements to solrconfig.xml to specifying additional
2560    classpath directories and regular expressions. (hossman via yonik)
2561
2562
2563Optimizations
2564----------------------
2565 1. SOLR-374: Use IndexReader.reopen to save resources by re-using parts of the
2566    index that haven't changed. (Mark Miller via yonik)
2567
2568 2. SOLR-808: Write string keys in Maps as extern strings in the javabin format. (Noble Paul via shalin)
2569
2570 3. SOLR-475: New faceting method with better performance and smaller memory usage for
2571    multi-valued fields with many unique values but relatively few values per document.
2572    Controllable via the facet.method parameter - "fc" is the new default method and "enum"
2573    is the original method.  (yonik)
2574
2575 4. SOLR-970: Use an ArrayList in SolrPluginUtils.parseQueryStrings
2576    since we know exactly how long the List will be in advance.
2577    (Kay Kay via hossman)
2578
2579 5. SOLR-1002: Change SolrIndexSearcher to use insertWithOverflow
2580    with reusable priority queue entries to reduce the amount of
2581    generated garbage during searching.  (Mark Miller via yonik)
2582
2583 6. SOLR-971: Replace StringBuffer with StringBuilder for instances that do not require thread-safety.
2584    (Kay Kay via shalin)
2585
2586 7. SOLR-921: SolrResourceLoader must cache short class name vs fully qualified classname
2587    (Noble Paul, hossman via shalin)
2588
2589 8. SOLR-973: CommonsHttpSolrServer writes the xml directly to the server.
2590    (Noble Paul via shalin)
2591
2592 9. SOLR-1108: Remove un-needed synchronization in SolrCore constructor.
2593    (Noble Paul via shalin)
2594
259510. SOLR-1166: Speed up docset/filter generation by avoiding top-level
2596    score() call and iterating over leaf readers with TermDocs. (yonik)
2597
259811. SOLR-1169: SortedIntDocSet - a new small set implementation
2599    that saves memory over HashDocSet, is faster to construct,
2600    is ordered for easier implementation of skipTo, and is faster
2601    in the general case. (yonik)
2602
260312. SOLR-1165: Use Lucene Filters and pass them down to the Lucene
2604    search methods to filter earlier and improve performance. (yonik)
2605
260613. SOLR-1111: Use per-segment sorting to share fieldcache elements
2607    across unchanged segments.  This saves memory and reduces
2608    commit times for incremental updates to the index. (yonik)
2609
261014. SOLR-1188: Minor efficiency improvement in TermVectorComponent related to ignoring positions or offsets (gsingers)
2611
261215. SOLR-1150: Load Documents for Highlighting one at a time rather than
2613    all at once to avoid OOM with many large Documents. (Siddharth Gargate via Mark Miller)
2614
261516. SOLR-1353: Implement and use reusable token streams for analysis. (Robert Muir, yonik)
2616
261717. SOLR-1296: Enables setting IndexReader's termInfosIndexDivisor via a new attribute to StandardIndexReaderFactory.  Enables
2618    setting termIndexInterval to IndexWriter via SolrIndexConfig. (Jason Rutherglen, hossman, gsingers)
2619
2620Bug Fixes
2621----------------------
2622 1. SOLR-774: Fixed logging level display (Sean Timm via Otis Gospodnetic)
2623
2624 2. SOLR-771: CoreAdminHandler STATUS should display 'normalized' paths (koji, hossman, shalin)
2625
2626 3. SOLR-532: WordDelimiterFilter now respects payloads and other attributes of the original Token by
2627    using Token.clone() (Tricia Williams, gsingers)
2628
2629 4. SOLR-805: DisMax queries are not being cached in QueryResultCache (Todd Feak via koji)
2630
2631 5. SOLR-751: WordDelimiterFilter didn't adjust the start offset of single
2632    tokens that started with delimiters, leading to incorrect highlighting.
2633    (Stefan Oestreicher via yonik)
2634
2635 7. SOLR-843: SynonymFilterFactory cannot handle multiple synonym files correctly (koji)
2636
2637 8. SOLR-840: BinaryResponseWriter does not handle incompatible data in fields (Noble Paul via shalin)
2638
2639 9. SOLR-803: CoreAdminRequest.createCore fails because name parameter isn't set (Sean Colombo via ryan)
2640
264110. SOLR-869: Fix file descriptor leak in SolrResourceLoader#getLines (Mark Miller, shalin)
2642
264311. SOLR-872: Better error message for incorrect copyField destination (Noble Paul via shalin)
2644
264512. SOLR-879: Enable position increments in the query parser and fix the
2646    example schema to enable position increments for the stop filter in
2647    both the index and query analyzers to fix the bug with phrase queries
2648    with stopwords. (yonik)
2649
265013. SOLR-836: Add missing "a" to the example stopwords.txt (yonik)
2651
265214. SOLR-892: Fix serialization of booleans for PHPSerializedResponseWriter
2653    (yonik)
2654
265515. SOLR-898: Fix null pointer exception for the JSON response writer
2656    based formats when nl.json=arrarr with null keys.  (yonik)
2657
265816. SOLR-901: FastOutputStream ignores write(byte[]) call.  (Noble Paul via shalin)
2659
266017. SOLR-807: BinaryResponseWriter writes fieldType.toExternal if it is not a supported type,
2661    otherwise it writes fieldType.toObject. This fixes the bug with encoding/decoding UUIDField.
2662    (koji, Noble Paul, shalin)
2663
266418. SOLR-863: SolrCore.initIndex should close the directory it gets for clearing the lock and
2665    use the DirectoryFactory. (Mark Miller via shalin)
2666
266719. SOLR-802: Fix a potential null pointer error in the distributed FacetComponent
2668    (David Bowen via ryan)
2669
267020. SOLR-346: Use perl regex to improve accuracy of finding latest snapshot in snapinstaller (billa)
2671
267221. SOLR-830: Use perl regex to improve accuracy of finding latest snapshot in snappuller (billa)
2673
267422. SOLR-897: Fixed Argument list too long error when there are lots of snapshots/backups (Dan Rosher via billa)
2675
267623. SOLR-925: Fixed highlighting on fields with multiValued="true" and termOffsets="true" (koji)
2677
267824. SOLR-902: FastInputStream#read(byte b[], int off, int len) gives incorrect results when amount left to read is less
2679    than buffer size (Noble Paul via shalin)
2680
268125. SOLR-978: Old files are not removed from slaves after replication (Jaco, Noble Paul, shalin)
2682
268326. SOLR-883: Implicit properties are not set for Cores created through CoreAdmin (Noble Paul via shalin)
2684
268527. SOLR-991: Better error message when parsing solrconfig.xml fails due to malformed XML. Error message notes the name
2686    of the file being parsed. (Michael Henson via shalin)
2687
268828. SOLR-1008: Fix stats.jsp XML encoding for <stat> item entries with ampersands in their names.  (ehatcher)
2689
269029. SOLR-976: deleteByQuery is ignored when deleteById is placed prior to deleteByQuery in a <delete>.
2691    Now both delete by id and delete by query can be specified at the same time as follows. (koji)
2692      <delete>
2693        <id>05991</id><id>06000</id>
2694        <query>office:Bridgewater</query><query>office:Osaka</query>
2695      </delete>
2696
269730. SOLR-1016: HTTP 503 error changes 500 in SolrCore (koji)
2698
269931. SOLR-1015: Incomplete information in replication admin page and http command response when server
2700    is both master and slave i.e. when server is a repeater (Akshay Ukey via shalin)
2701
270232. SOLR-1018: Slave is unable to replicate when server acts as repeater (as both master and slave)
2703    (Akshay Ukey, Noble Paul via shalin)
2704
270533. SOLR-1031: Fix XSS vulnerability in schema.jsp (Paul Lovvik via ehatcher)
2706
270734. SOLR-1064: registry.jsp incorrectly displaying info for last core initialized
2708    regardless of what the current core is. (hossman)
2709
271035. SOLR-1072: absolute paths used in sharedLib attribute were
2711    incorrectly treated as relative paths. (hossman)
2712
271336. SOLR-1104: Fix some rounding errors in LukeRequestHandler's histogram (hossman)
2714
271537. SOLR-1125: Use query analyzer rather than index analyzer for queryFieldType in QueryElevationComponent
2716    (koji)
2717
271838. SOLR-1126: Replicated files have incorrect timestamp (Jian Han Guo, Jeff Newburn, Noble Paul via shalin)
2719
272039. SOLR-1094: Incorrect value of correctlySpelled attribute in some cases (David Smiley, Mark Miller via shalin)
2721
272240. SOLR-965: Better error message when <pingQuery> is not configured.
2723    (Mark Miller via hossman)
2724
272541. SOLR-1135: Java replication creates Snapshot in the directory where Solr was launched (Jianhan Guo via shalin)
2726
272742. SOLR-1138: Query Elevation Component now gracefully handles missing queries. (gsingers)
2728
272943. SOLR-929: LukeRequestHandler should return "dynamicBase" only if the field is dynamic.
2730    (Peter Wolanin, koji)
2731
273244. SOLR-1141: NullPointerException during snapshoot command in java based replication (Jian Han Guo, shalin)
2733
273445. SOLR-1078: Fixes to WordDelimiterFilter to avoid splitting or dropping
2735    international non-letter characters such as non spacing marks. (yonik)
2736   
273746. SOLR-825, SOLR-1221: Enables highlighting for range/wildcard/fuzzy/prefix queries if using hl.usePhraseHighlighter=true
2738    and hl.highlightMultiTerm=true. Also make both options default to true. (Mark Miller, yonik)
2739
274047. SOLR-1174: Fix Logging admin form submit url for multicore. (Jacob Singh via shalin)
2741
274248. SOLR-1182: Fix bug in OrdFieldSource#equals which could cause a bug with OrdFieldSource caching
2743               on OrdFieldSource#hashcode collisions. (Mark Miller)
2744
274549. SOLR-1207: equals method should compare this and other of DocList in DocSetBase (koji)
2746
274750. SOLR-1242: Human readable JVM info from system handler does integer cutoff rounding, even when dealing
2748               with GB. Fixed to round to one decimal place. (Jay Hill, Mark Miller)
2749
275051. SOLR-1243: Admin RequestHandlers should not be cached over HTTP. (Mark Miller)
2751
275252. SOLR-1260: Fix implementations of set operations for DocList subclasses
2753    and fix a bug in HashDocSet construction when offset != 0.  These bugs
2754    never manifested in normal Solr use and only potentially affect
2755    custom code. (yonik)
2756
275753. SOLR-1171: Fix LukeRequestHandler so it doesn't rely on SolrQueryParser
2758    and report incorrect stats when field names contain characters
2759    SolrQueryParser considers special.
2760    (hossman)
2761
276254. SOLR-1317: Fix CapitalizationFilterFactory to work when keep parameter is not specified.
2763    (ehatcher)
2764
276555. SOLR-1342: CapitalizationFilterFactory uses incorrect term length calculations.
2766    (Robert Muir via Mark Miller)
2767
276856. SOLR-1359: DoubleMetaphoneFilter didn't index original tokens if there was no
2769    alternative, and could incorrectly skip or reorder tokens.  (yonik)
2770
277157. SOLR-1360: Prevent PhoneticFilter from producing duplicate tokens. (yonik)
2772
277358. SOLR-1371: LukeRequestHandler/schema.jsp errored if schema had no
2774    uniqueKey field.  The new test for this also (hopefully) adds some
2775    future proofing against similar bugs in the future.  As a side
2776    effect QueryElevationComponentTest was refactored, and a bug in
2777    that test was found. (hossman)
2778
277959. SOLR-914: General finalize() improvements.  No finalizer delegates
2780    to the respective close/destroy method w/o first checking if it's
2781    already been closed/destroyed; if it hasn't a, SEVERE error is
2782    logged first.  (noble, hossman)
2783
278460. SOLR-1362: WordDelimiterFilter had inconsistent behavior when setting
2785    the position increment of tokens following a token consisting of all
2786    delimiters, and could additionally lose big position increments.
2787    (Robert Muir, yonik)
2788
278961. SOLR-1091: Jetty's use of CESU-8 for code points outside the BMP
2790    resulted in invalid output from the serialized PHP writer. (yonik)
2791
279262. SOLR-1103: LukeRequestHandler (and schema.jsp) have been fixed to
2793    include the "1" (ie: 2**0) bucket in the term histogram data.
2794    (hossman)
2795
279663. SOLR-1398: Add offset corrections in PatternTokenizerFactory.
2797    (Anders Melchiorsen, koji)
2798
279964. SOLR-1400: Properly handle zero-length tokens in TrimFilter.  This
2800    was not a bug in any released version. (Peter Wolanin, gsingers)
2801
280265. SOLR-1071: spellcheck.extendedResults returns an invalid JSON response
2803    when count > 1.  To fix, the extendedResults format was changed.
2804    (Uri Boness, yonik)
2805
280666. SOLR-1381: Fixed improper handling of fields that have only term positions and not term offsets during Highlighting (Thorsten Fischer, gsingers)
2807
280867. SOLR-1427: Fixed registry.jsp issue with MBeans (gsingers)
2809
281068. SOLR-1468: SolrJ's XML response parsing threw an exception for null
2811     names, such as those produced when facet.missing=true (yonik)
2812
281369. SOLR-1471: Fixed issue with calculating missing values for facets in single valued cases in Stats Component.
2814  This is not correctly calculated for the multivalued case. (James Miller, gsingers)
2815
281670. SOLR-1481: Fixed omitHeader parameter for PHP ResponseWriter.  (Jun Ohtani via billa)
2817
281871. SOLR-1448: Add weblogic.xml to solr webapp to enable correct operation in
2819    WebLogic. (Ilan Rabinovitch via yonik)
2820
282172. SOLR-1504: empty char mapping can cause ArrayIndexOutOfBoundsException in analysis.jsp and co.
2822    (koji)
2823
282473. SOLR-1394: HTMLStripCharFilter split tokens that contained entities and
2825    often calculated offsets incorrectly for entities.
2826    (Anders Melchiorsen via yonik)
2827
282874. SOLR-1517: Admin pages could stall waiting for localhost name resolution
2829    if reverse DNS wasn't configured; this was changed so the DNS resolution
2830    is attempted only once the first time an admin page is loaded.
2831    (hossman)
2832
283375. SOLR-1529: More than 8 deleteByQuery commands in a single request
2834    caused an error to be returned, although the deletes were
2835    still executed.  (asmodean via yonik)
2836
2837Other Changes
2838----------------------
2839 1. Upgraded to Lucene 2.4.0 (yonik)
2840
2841 2. SOLR-805: Upgraded to Lucene 2.9-dev (r707499) (koji)
2842
2843 3. DumpRequestHandler (/debug/dump): changed 'fieldName' to 'sourceInfo'. (ehatcher)
2844
2845 4. SOLR-852: Refactored common code in CSVRequestHandler and XMLUpdateRequestHandler (gsingers, ehatcher)
2846
2847 5. SOLR-871: Removed dependency on stax-utils.jar.  If you using solr.jar and running
2848    java 6, you can also remove woodstox and geronimo.  (ryan)
2849
2850 6. SOLR-465: Upgraded to Lucene 2.9-dev (r719351) (shalin)
2851
2852 7. SOLR-889: Upgraded to commons-io-1.4.jar and commons-fileupload-1.2.1.jar (ryan)
2853
2854 8. SOLR-875: Upgraded to Lucene 2.9-dev (r723985) and consolidated the BitSet implementations (Michael Busch, gsingers)
2855
2856 9. SOLR-819: Upgraded to Lucene 2.9-dev (r724059) to get access to Arabic public constructors (gsingers)
2857                                                 and
285810. SOLR-900: Moved solrj into /src/solrj.  The contents of solr-common.jar is now included
2859    in the solr-solrj.jar. (ryan)
2860
286111. SOLR-924: Code cleanup: make all existing finalize() methods call
2862    super.finalize() in a finally block.  All current instances extend
2863    Object, so this doesn't fix any bugs, but helps protect against
2864    future changes.  (Kay Kay via hossman)
2865
286612. SOLR-885: NamedListCodec is renamed to JavaBinCodec and returns Object instead of NamedList.
2867    (Noble Paul, yonik via shalin)
2868
286913. SOLR-84: Use new Solr logo in admin (Michiel via koji)
2870
287114. SOLR-981: groupId for Woodstox dependency in maven solrj changed to org.codehaus.woodstox (Tim Taranov via shalin)
2872
287315. Upgraded to Lucene 2.9-dev r738218 (yonik)
2874
287516. SOLR-959: Refactored TestReplicationHandler to remove hardcoded port numbers (hossman, Akshay Ukey via shalin)
2876
287717. Upgraded to Lucene 2.9-dev r742220 (yonik)
2878
287918. SOLR-1022: Better "ignored" field in example schema.xml (Peter Wolanin via hossman)
2880
288119. SOLR-967: New type-safe constructor for NamedList (Kay Kay via hossman)
2882
288320. SOLR-1036: Change default QParser from "lucenePlusSort" to "lucene" to
2884    reduce confusion of semicolon splitting behavior when no sort param is
2885    specified (hossman)
2886
288721. Upgraded to Lucene 2.9-dev r752164 (shalin)
2888
288922. SOLR-1068: Use fsync on replicated index and configuration files (yonik, Noble Paul, shalin)
2890
289123. SOLR-952: Cleanup duplicated code in deprecated HighlightingUtils (hossman)
2892
289324. Upgraded to Lucene 2.9-dev r764281 (shalin)
2894
289525. SOLR-1079:  Rename omitTf to omitTermFreqAndPositions (shalin)
2896
289726. SOLR-804: Added Lucene's misc contrib JAR (rev 764281). (gsingers)
2898
289927. Upgraded to Lucene 2.9-dev r768228 (shalin)
2900
290128. Upgraded to Lucene 2.9-dev r768336 (shalin)
2902
290329. SOLR-997: Wait for a longer time for slave to complete replication in TestReplicationHandler
2904    (Mark Miller via shalin)
2905
290630. SOLR-748: FacetComponent helper classes are made public as an experimental API.
2907    (Wojtek Piaseczny via shalin)
2908   
290931. Upgraded to Lucene 2.9-dev 773862 (Mark Miller)
2910
291132. Upgraded to Lucene 2.9-dev r776177 (shalin)
2912
291333. SOLR-1149: Made QParserPlugin and related classes extendible as an experimental API.
2914    (Kaktu Chakarabati via shalin)
2915
291634. Upgraded to Lucene 2.9-dev r779312 (yonik)
2917
291835. SOLR-786: Refactor DisMaxQParser to allow overriding certain features of DisMaxQParser
2919    (Wojciech Biela via shalin)
2920
292136. SOLR-458: Add equals and hashCode methods to NamedList (Stefan Rinner, shalin)
2922
292337. SOLR-1184: Add option in solrconfig to open a new IndexReader rather than
2924    using reopen. Done mainly as a fail-safe in the case that a user runs into
2925    a reopen bug/issue.  (Mark Miller)
2926   
292738. SOLR-1215 use double quotes to enclose attributes in solr.xml (noble)
2928
292939. SOLR-1151: add dynamic copy field and maxChars example to example schema.xml.
2930    (Peter Wolanin, Mark Miller)
2931
293240. SOLR-1233: remove /select?qt=/whatever restriction on /-prefixed request handlers.
2933    (ehatcher)
2934
293541. SOLR-1257: logging.jsp has been removed and now passes through to the
2936    hierarchical log level tool added in Solr 1.3.  Users still
2937    hitting "/admin/logging.jsp" should switch to "/admin/logging".
2938    (hossman)
2939
294042. Upgraded to Lucene 2.9-dev r794238. Other changes include:
2941    LUCENE-1614 - Use Lucene's DocIdSetIterator.NO_MORE_DOCS as the sentinel value.
2942    LUCENE-1630 - Add acceptsDocsOutOfOrder method to Collector implementations.
2943    LUCENE-1673, LUCENE-1701 - Trie has moved to Lucene core and renamed to NumericRangeQuery.
2944    LUCENE-1662, LUCENE-1687 - Replace usage of ExtendedFieldCache by FieldCache.
2945    (shalin)
2946
294742. SOLR-1241: Solr's CharFilter has been moved to Lucene. Remove CharFilter and related classes
2948    from Solr and use Lucene's corresponding code (koji via shalin)
2949
295043. SOLR-1261: Lucene trunk renamed RangeQuery & Co to TermRangeQuery (Uwe Schindler via shalin)
2951
295244. Upgraded to Lucene 2.9-dev r801856 (Mark Miller)
2953
295445. SOLR1276: Added StatsComponentTest (Rafaᅵł Kuᅵć, gsingers)
2955
295646. SOLR-1377:  The TokenizerFactory API has changed to explicitly return a Tokenizer
2957    rather then a TokenStream (that may be or may not be a Tokenizer).  This change
2958    is required to take advantage of the Token reuse improvements in lucene 2.9. (ryan) 
2959   
296047. SOLR-1410: Log a warning if the deprecated charset option is used
2961    on GreekLowerCaseFilterFactory, RussianStemFilterFactory,
2962    RussianLowerCaseFilterFactory or RussianLetterTokenizerFactory.
2963    (Robert Muir via hossman)
2964
296548. SOLR-1423: Due to LUCENE-1906, Solr's tokenizer should use Tokenizer.correctOffset() instead of CharStream.correctOffset().
2966    (Uwe Schindler via koji)
2967
296849. SOLR-1319, SOLR-1345: Upgrade Solr Highlighter classes to new Lucene Highlighter API. This upgrade has
2969    resulted in a back compat break in the DefaultSolrHighlighter class - getQueryScorer is no longer
2970    protected. If you happened to be overriding that method in custom code, overide getHighlighter instead.
2971    Also, HighlightingUtils#getQueryScorer has been removed as it was deprecated and backcompat has been
2972    broken with it anyway.  (Mark Miller)
2973
297450. SOLR-1357 SolrInputDocument cannot process dynamic fields (Lars Grote via noble)
2975
2976Build
2977----------------------
2978 1. SOLR-776: Added in ability to sign artifacts via Ant for releases (gsingers)
2979
2980 2. SOLR-854: Added run-example target (Mark Miller via ehatcher)
2981
2982 3. SOLR-1054:Fix dist-src target for DataImportHandler (Ryuuichi Kumai via shalin)
2983
2984 4. SOLR-1219: Added proxy.setup target (koji)
2985
2986 5. SOLR-1386: In build.xml, use longfile="gnu" in tar task to avoid warnings about long file names
2987    (Mark Miller via shalin)
2988
2989 6. SOLR-1441: Make it possible to run all tests in a package (shalin)
2990 
2991
2992Documentation
2993----------------------
2994 1. SOLR-789: The javadoc of RandomSortField is not readable (Nicolas LalevᅵÁᅵe via koji)
2995
2996 2. SOLR-962: Note about null handling in ModifiableSolrParams.add javadoc
2997    (Kay Kay via hossman)
2998
2999 3. SOLR-1409: Added Solr Powered By Logos   
3000
3001================== Release 1.3.0 ==================
3002
3003Upgrading from Solr 1.2
3004-----------------------
3005IMPORTANT UPGRADE NOTE: In a master/slave configuration, all searchers/slaves
3006should be upgraded before the master!  If the master were to be updated
3007first, the older searchers would not be able to read the new index format.
3008
3009The Porter snowball based stemmers in Lucene were updated (LUCENE-1142),
3010and are not guaranteed to be backward compatible at the index level
3011(the stem of certain words may have changed).  Re-indexing is recommended.
3012
3013Older Apache Solr installations can be upgraded by replacing
3014the relevant war file with the new version.  No changes to configuration
3015files should be needed. 
3016
3017This version of Solr contains a new version of Lucene implementing
3018an updated index format.  This version of Solr/Lucene can still read
3019and update indexes in the older formats, and will convert them to the new
3020format on the first index change.  Be sure to backup your index before
3021upgrading in case you need to downgrade.
3022
3023Solr now recognizes HTTP Request headers related to HTTP Caching (see
3024RFC 2616 sec13) and will by default respond with "304 Not Modified"
3025when appropriate.  This should only affect users who access Solr via
3026an HTTP Cache, or via a Web-browser that has an internal cache, but if
3027you wish to suppress this behavior an '<httpCaching never304="true"/>'
3028option can be added to your solrconfig.xml.  See the wiki (or the
3029example solrconfig.xml) for more details... 
3030   http://wiki.apache.org/solr/SolrConfigXml#HTTPCaching
3031
3032In Solr 1.2, DateField did not enforce the canonical representation of
3033the ISO 8601 format when parsing incoming data, and did not generation
3034the canonical format when generating dates from "Date Math" strings
3035(particularly as it pertains to milliseconds ending in trailing zeros)
3036-- As a result equivalent dates could not always be compared properly.
3037This problem is corrected in Solr 1.3, but DateField users that might
3038have been affected by indexing inconsistent formats of equivilent
3039dates (ie: 1995-12-31T23:59:59Z vs 1995-12-31T23:59:59.000Z) may want
3040to consider reindexing to correct these inconsistencies.  Users who
3041depend on some of the the "broken" behavior of DateField in Solr 1.2
3042(specificly: accepting any input that ends in a 'Z') should consider
3043using the LegacyDateField class as a possible alternative.  Users that
3044desire 100% backwards compatibility should consider using the Solr 1.2
3045version of DateField.
3046
3047Due to some changes in the lifecycle of TokenFilterFactories, users of
3048Solr 1.2 who have written Java code which constructs new instances of
3049StopFilterFactory, SynonymFilterFactory, or EnglishProterFilterFactory
3050will need to modify their code by adding a line like the following
3051prior to using the factory object...   
3052  factory.inform(SolrCore.getSolrCore().getSolrConfig().getResourceLoader());
3053These lifecycle changes do not affect people who use Solr "out of the
3054box" or who have developed their own TokenFilterFactory plugins. More
3055info can be found in SOLR-594.
3056
3057The python client that used to ship with Solr is no longer included in
3058the distribution (see client/python/README.txt).
3059   
3060Detailed Change List
3061--------------------
3062
3063New Features
3064 1. SOLR-69: Adding MoreLikeThisHandler to search for similar documents using
3065    lucene contrib/queries MoreLikeThis.  MoreLikeThis is also available from
3066    the StandardRequestHandler using ?mlt=true. (bdelacretaz, ryan)
3067
3068 2. SOLR-253: Adding KeepWordFilter and KeepWordFilterFactory.  A TokenFilter
3069    that keeps tokens with text in the registered keeplist.  This behaves like
3070    the inverse of StopFilter. (ryan)
3071
3072 3. SOLR-257: WordDelimiterFilter has a new parameter splitOnCaseChange,
3073    which can be set to 0 to disable splitting "PowerShot" => "Power" "Shot".
3074    (klaas)
3075   
3076 4. SOLR-193: Adding SolrDocument and SolrInputDocument to represent documents
3077    outside of the lucene Document infrastructure.  This class will be used
3078    by clients and for processing documents. (ryan)
3079
3080 5. SOLR-244: Added ModifiableSolrParams - a SolrParams implementation that
3081    help you change values after initialization. (ryan)
3082
3083 6. SOLR-20: Added a java client interface with two implementations.  One
3084    implementation uses commons httpclient to connect to solr via HTTP.  The
3085    other connects to solr directly.  Check client/java/solrj.  This addition
3086    also includes tests that start jetty and test a connection using the full
3087    HTTP request cycle.  (Darren Erik Vengroff, Will Johnson, ryan)
3088 
3089 7. SOLR-133: Added StaxUpdateRequestHandler that uses StAX for XML parsing.
3090    This implementation has much better error checking and lets you configure
3091    a custom UpdateRequestProcessor that can selectively process update
3092    requests depending on the request attributes.  This class will likely
3093    replace XmlUpdateRequestHandler.  (Thorsten Scherler, ryan)
3094
3095 8. SOLR-264: Added RandomSortField, a utility field with a random sort order.
3096    The seed is based on a hash of the field name, so a dynamic field
3097    of this type is useful for generating different random sequences.
3098    This field type should only be used for sorting or as a value source
3099    in a FunctionQuery (ryan, hossman, yonik)
3100
3101 9. SOLR-266: Adding show=schema to LukeRequestHandler to show the parsed
3102    schema fields and field types.  (ryan)
3103
310410. SOLR-133: The UpdateRequestHandler now accepts multiple delete options
3105    within a single request.  For example, sending:
3106     <delete><id>1</id><id>2</id></delete> will delete both 1 and 2. (ryan)
3107
310811. SOLR-269: Added UpdateRequestProcessor plugin framework.  This provides
3109    a reasonable place to process documents after they are parsed and
3110    before they are committed to the index.  This is a good place for custom
3111    document manipulation or document based authorization. (yonik, ryan)
3112
311312. SOLR-260: Converting to a standard PluginLoader framework.  This reworks
3114    RequestHandlers, FieldTypes, and QueryResponseWriters to share the same
3115    base code for loading and initializing plugins.  This adds a new
3116    configuration option to define the default RequestHandler and
3117    QueryResponseWriter in XML using default="true".  (ryan)
3118
311913. SOLR-225: Enable pluggable highlighting classes.  Allow configurable
3120    highlighting formatters and Fragmenters.  (ryan)
3121
312214. SOLR-273/376/452/516: Added hl.maxAnalyzedChars highlighting parameter, defaulting
3123    to 50k, hl.alternateField, which allows the specification of a backup
3124    field to use as summary if no keywords are matched, and hl.mergeContiguous,
3125    which combines fragments if they are adjacent in the source document.
3126    (klaas, Grant Ingersoll, Koji Sekiguchi via klaas)
3127
312815. SOLR-291: Control maximum number of documents to cache for any entry
3129    in the queryResultCache via queryResultMaxDocsCached solrconfig.xml
3130    entry. (Koji Sekiguchi via yonik)
3131
313216. SOLR-240: New <lockType> configuration setting in <mainIndex> and
3133    <indexDefaults> blocks supports all Lucene builtin LockFactories.
3134    'single' is recommended setting, but 'simple' is default for total
3135    backwards compatibility.
3136    (Will Johnson via hossman)
3137   
313817. SOLR-248: Added CapitalizationFilterFactory that creates tokens with
3139    normalized capitalization.  This filter is useful for facet display,
3140    but will not work with a prefix query.  (ryan)
3141    SOLR-468: Change to the semantics to keep the original token, not the
3142    token in the Map.  Also switched to use Lucene's new reusable token
3143    capabilities.  (gsingers)
3144
314518. SOLR-307: Added NGramFilterFactory and EdgeNGramFilterFactory.
3146    (Thomas Peuss via Otis Gospodnetic)
3147
314819. SOLR-305: analysis.jsp can be given a fieldtype instead of a field
3149    name.  (hossman)
3150
315120. SOLR-102: Added RegexFragmenter, which splits text for highlighting
3152    based on a given pattern.  (klaas)
3153
315421. SOLR-258: Date Faceting added to SimpleFacets.  Facet counts
3155    computed for ranges of size facet.date.gap (a DateMath expression)
3156    between facet.date.start and facet.date.end.  (hossman)
3157
315822. SOLR-196: A PHP serialized "phps" response writer that returns a
3159    serialized array that can be used with the PHP function unserialize,
3160    and a PHP response writer "php" that may be used by eval.
3161    (Nick Jenkin, Paul Borgermans, Pieter Berkel via yonik)
3162
316323. SOLR-308: A new UUIDField class which accepts UUID string values,
3164    as well as the special value of "NEW" which triggers generation of
3165    a new random UUID.
3166    (Thomas Peuss via hossman)
3167
316824. SOLR-349: New FunctionQuery functions: sum, product, div, pow, log,
3169    sqrt, abs, scale, map.  Constants may now be used as a value source.
3170    (yonik)
3171
317225. SOLR-359: Add field type className to Luke response, and enabled access
3173    to the detailed field information from the solrj client API.
3174    (Grant Ingersoll via ehatcher)
3175
317626. SOLR-334: Pluggable query parsers.  Allows specification of query
3177    type and arguments as a prefix on a query string. (yonik)
3178
317927. SOLR-351: External Value Source.  An external file may be used
3180     to specify the values of a field, currently usable as
3181     a ValueSource in a FunctionQuery. (yonik)
3182
318328. SOLR-395: Many new features for the spell checker implementation, including
3184    an extended response mode with much richer output, multi-word spell checking,
3185    and a bevy of new and renamed options (see the wiki).
3186    (Mike Krimerman, Scott Taber via klaas).
3187
318829. SOLR-408: Added PingRequestHandler and deprecated SolrCore.getPingQueryRequest().
3189    Ping requests should be configured using standard RequestHandler syntax in
3190    solrconfig.xml rather then using the <pingQuery></pingQuery> syntax.
3191    (Karsten Sperling via ryan)
3192
319330. SOLR-281: Added a 'Search Component' interface and converted StandardRequestHandler
3194    and DisMaxRequestHandler to use this framework. 
3195    (Sharad Agarwal, Henri Biestro, yonik, ryan)
3196   
319731. SOLR-176: Add detailed timing data to query response output.  The SearchHandler
3198    interface now returns how long each section takes.  (klaas)
3199   
320032. SOLR-414: Plugin initialization now supports SolrCore and ResourceLoader "Aware"
3201    plugins.  Plugins that implement SolrCoreAware or ResourceLoaderAware are
3202    informed about the SolrCore/ResourceLoader. (Henri Biestro, ryan)
3203
320433. SOLR-350: Support multiple SolrCores running in the same solr instance and allows
3205    runtime runtime management for any running SolrCore.  If a solr.xml file exists
3206    in solr.home, this file is used to instanciate multiple cores and enables runtime
3207    core manipulation.  For more informaion see:  http://wiki.apache.org/solr/CoreAdmin 
3208    (Henri Biestro, ryan)
3209
321034. SOLR-447: Added an single request handler that will automatically register all
3211    standard admin request handlers.  This replaces the need to register (and maintain)
3212    the set of admin request handlers.  Assuming solrconfig.xml includes:
3213     <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" />
3214    This will register: Luke/SystemInfo/PluginInfo/ThreadDump/PropertiesRequestHandler.
3215    (ryan)
3216   
321735. SOLR-142: Added RawResponseWriter and ShowFileRequestHandler.  This returns config
3218    files directly.  If AdminHandlers are configured, this will be added automatically.
3219    The jsp files /admin/get-file.jsp and /admin/raw-schema.jsp have been deprecated.
3220    The deprecated <admin><gettableFiles> will be automatically registered with
3221    a ShowFileRequestHandler instance for backwards compatibility. (ryan)
3222
322336. SOLR-446: TextResponseWriter can write SolrDocuments and SolrDocumentLists the
3224    same way it writes Document and DocList.  (yonik, ryan)
3225
322637. SOLR-418: Adding a query elevation component.  This is an optional component to
3227    elevate some documents to the top positions (or exclude them) for a given query.
3228    (ryan)
3229
323038. SOLR-478: Added ability to get back unique key information from the LukeRequestHandler.
3231    (gsingers)   
3232
323339. SOLR-127: HTTP Caching awareness.  Solr now recognizes HTTP Request
3234    headers related to HTTP Caching (see RFC 2616 sec13) and will respond
3235    with "304 Not Modified" when appropriate.  New options have been added
3236    to solrconfig.xml to influence this behavior.
3237    (Thomas Peuss via hossman)
3238
323940. SOLR-303: Distributed Search over HTTP.  Specification of shards
3240    argument causes Solr to query those shards and merge the results
3241    into a single response.  Querying, field faceting (sorted only),
3242    query faceting, highlighting, and debug information are supported
3243    in distributed mode.
3244    (Sharad Agarwal, Patrick O'Leary, Sabyasachi Dalal, Stu Hood,
3245     Jayson Minard, Lars Kotthoff, ryan, yonik)
3246
324741. SOLR-356: Pluggable functions (value sources) that allow
3248    registration of new functions via solrconfig.xml
3249    (Doug Daniels via yonik)
3250
325142. SOLR-494: Added cool admin Ajaxed schema explorer.
3252    (Greg Ludington via ehatcher)
3253
325443. SOLR-497: Added date faceting to the QueryResponse in SolrJ
3255    and QueryResponseTest (Shalin Shekhar Mangar via gsingers)
3256
325744. SOLR-486: Binary response format, faster and smaller
3258    than XML and JSON response formats (use wt=javabin).
3259    BinaryResponseParser for utilizing the binary format via SolrJ
3260    and is now the default.
3261    (Noble Paul, yonik)
3262
326345. SOLR-521: StopFilterFactory support for "enablePositionIncrements"
3264    (Walter Ferrara via hossman)
3265
326646. SOLR-557: Added SolrCore.getSearchComponents() to return an unmodifiable Map. (gsingers)
3267
326847. SOLR-516: Added hl.maxAlternateFieldLength parameter, to set max length for hl.alternateField
3269    (Koji Sekiguchi via klaas)
3270
327148. SOLR-319: Changed SynonymFilterFactory to "tokenize" synonyms file.
3272    To use a tokenizer, specify "tokenizerFactory" attribute in <filter>.
3273    For example:
3274    <tokenizer class="solr.CJKTokenizerFactory"/>
3275    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" expand="true"
3276      ignoreCase="true" tokenizerFactory="solr.CJKTokenizerFactory"/>
3277    (koji)
3278
327949. SOLR-515: Added SimilarityFactory capability to schema.xml,
3280    making config file parameters usable in the construction of
3281    the global Lucene Similarity implementation.
3282    (ehatcher)
3283   
328450. SOLR-536: Add a DocumentObjectBinder to solrj that converts Objects to and
3285    from SolrDocuments.  (Noble Paul via ryan)
3286
328751. SOLR-595: Add support for Field level boosting in the MoreLikeThis Handler. 
3288    (Tom Morton, gsingers)
3289
329052. SOLR-572: Added SpellCheckComponent and org.apache.solr.spelling package to support more spell
3291    checking functionality.  Also includes ability to add your own SolrSpellChecker implementation that
3292    plugs in.  See http://wiki.apache.org/solr/SpellCheckComponent for more details
3293    (Shalin Shekhar Mangar, Bojan Smid, gsingers)
3294
329553. SOLR-679: Added accessor methods to Lucene based spell checkers (gsingers)
3296
329754. SOLR-423: Added Request Handler close hook notification so that RequestHandlers can be notified
3298    when a core is closing.  (gsingers, ryan)
3299
330055. SOLR-603: Added ability to partially optimize. (gsingers)
3301
330256. SOLR-483: Add byte/short sorting support (gsingers)
3303
330457. SOLR-14: Add preserveOriginal flag to WordDelimiterFilter
3305    (Geoffrey Young, Trey Hyde, Ankur Madnani, yonik)
3306
330758. SOLR-502: Add search timeout support. (Sean Timm via yonik)
3308   
330959. SOLR-605: Add the ability to register callbacks programatically (ryan, Noble Paul)
3310
331160. SOLR-610: hl.maxAnalyzedChars can be -1 to highlight everything (Lars Kotthoff via klaas)
3312
331361. SOLR-522: Make analysis.jsp show payloads. (Tricia Williams via yonik)
3314
331562. SOLR-611: Expose sort_values returned by QueryComponent in SolrJ's QueryResponse
3316    (Dan Rosher via shalin)
3317
331863. SOLR-256: Support exposing Solr statistics through JMX (Sharad Agrawal, shalin)
3319
332064. SOLR-666: Expose warmup time in statistics for SolrIndexSearcher and LRUCache (shalin)
3321
332265. SOLR-663: Allow multiple files for stopwords, keepwords, protwords and synonyms
3323    (Otis Gospodnetic, shalin)
3324
332566. SOLR-469: Added DataImportHandler as a contrib project which makes indexing data from Databases,
3326    XML files and HTTP data sources into Solr quick and easy. Includes API and implementations for
3327    supporting multiple data sources, processors and transformers for importing data. Supports full
3328    data imports as well as incremental (delta) indexing. See http://wiki.apache.org/solr/DataImportHandler
3329    for more details. (Noble Paul, shalin)
3330
333167. SOLR-622: SpellCheckComponent supports auto-loading indices on startup and optionally, (re)builds
3332    indices on newSearcher event, if configured in solrconfig.xml (shalin)
3333
333468. SOLR-554: Hierarchical JDK log level selector for SOLR Admin replaces logging.jsp
3335    (Sean Timm via shalin)
3336
333769. SOLR-506: Emitting HTTP Cache headers can be enabled or disabled through configuration on a
3338    per-handler basis (shalin)
3339
334070. SOLR-716: Added support for properties in configuration files. Properties can be specified in
3341    solr.xml and can be used in solrconfig.xml and schema.xml (Henri Biestro, hossman, ryan, shalin)
3342
334371. SOLR-1129 : Support binding dynamic fields to beans in SolrJ (Avlesh Singh , noble)
3344
334572. SOLR-920 : Cache and reuse IndexSchema . A new attribute added in solr.xml called 'shareSchema' (noble)
3346   
3347Changes in runtime behavior
3348 1. SOLR-559: use Lucene updateDocument, deleteDocuments methods.  This
3349    removes the maxBufferedDeletes parameter added by SOLR-310 as Lucene
3350    now manages the deletes.  This provides slightly better indexing
3351    performance and makes overwrites atomic, eliminating the possibility of
3352    a crash causing duplicates. (yonik)
3353
3354 2. SOLR-689 / SOLR-695: If you have used "MultiCore" functionality in an unreleased
3355    version of 1.3-dev, many classes and configs have been renamed for the official
3356    1.3 release.  Speciffically, solr.xml has replaced multicore.xml, and uses a slightly
3357    different syntax.  The solrj classes: MultiCore{Request/Response/Params} have been
3358    renamed:  CoreAdmin{Request/Response/Params}  (hossman, ryan, Henri Biestro)
3359
3360 3. SOLR-647: reference count the SolrCore uses to prevent a premature
3361    close while a core is still in use.  (Henri Biestro, Noble Paul, yonik)
3362
3363 4. SOLR-737: SolrQueryParser now uses a ConstantScoreQuery for wildcard
3364    queries that prevent an exception from being thrown when the number
3365    of matching terms exceeds the BooleanQuery clause limit.  (yonik)
3366   
3367Optimizations
3368 1. SOLR-276: improve JSON writer speed. (yonik)
3369 
3370 2. SOLR-310: bound and reduce memory usage by providing <maxBufferedDeletes> parameter,
3371    which flushes deleted without forcing the user to use <commit/> for this purpose.
3372    (klaas)
3373
3374 3. SOLR-348: short-circuit faceting if less than mincount docs match. (yonik)
3375
3376 4. SOLR-354: Optimize removing all documents.  Now when a delete by query
3377    of *:* is issued, the current index is removed. (yonik)
3378
3379 5. SOLR-377: Speed up response writers. (yonik)
3380
3381 6. SOLR-342:  Added support into the SolrIndexWriter for using several new features of the new
3382    LuceneIndexWriter, including: setRAMBufferSizeMB(), setMergePolicy(), setMergeScheduler. 
3383    Also, added support to specify Lucene's autoCommit functionality (not to be confused with Solr's
3384    similarily named autoCommit functionality) via the <luceneAutoCommit> config. item.  See the test
3385    and example solrconfig.xml <indexDefaults> section for usage.  Performance during indexing should
3386    be significantly increased by moving up to 2.3 due to Lucene's new indexing capabilities. 
3387    Furthermore, the setRAMBufferSizeMB makes it more logical to decide on tuning factors related to
3388    indexing.  For best performance, leave the mergePolicy and mergeScheduler as the defaults and set
3389    ramBufferSizeMB instead of maxBufferedDocs.  The best value for this depends on the types of
3390    documents in use.  32 should be a good starting point, but reports have shown up to 48 MB provides
3391    good results. Note, it is acceptable to set both ramBufferSizeMB and maxBufferedDocs, and Lucene
3392    will flush based on whichever limit is reached first. (gsingers)
3393   
3394 7. SOLR-330: Converted TokenStreams to use Lucene's new char array based
3395    capabilities. (gsingers)
3396
3397 8. SOLR-624: Only take snapshots if there are differences to the index (Richard Trey Hyde via gsingers)
3398
3399 9. SOLR-587: Delete by Query performance greatly improved by using
3400    new underlying Lucene IndexWriter implementation.  (yonik)
3401
340210. SOLR-730: Use read-only IndexReaders that don't synchronize
3403    isDeleted().  This will speed up function queries and *:* queries
3404    as well as improve their scalability on multi-CPU systems.
3405    (Mark Miller via yonik)
3406
3407Bug Fixes
3408 1. Make TextField respect sortMissingFirst and sortMissingLast fields.
3409    (J.J. Larrea via yonik)
3410
3411 2. autoCommit/maxDocs was not working properly when large autoCommit/maxTime
3412    was specified (klaas)
3413
3414 3. SOLR-283: autoCommit was not working after delete. (ryan)
3415
3416 4. SOLR-286: ContentStreamBase was not using default encoding for getBytes()
3417    (Toru Matsuzawa via ryan)
3418
3419 5. SOLR-292: Fix MoreLikeThis facet counting. (Pieter Berkel via ryan)
3420
3421 6. SOLR-297: Fix bug in RequiredSolrParams where requiring a field
3422    specific param would fail if a general default value had been supplied.
3423    (hossman)
3424
3425 7. SOLR-331: Fix WordDelimiterFilter handling of offsets for synonyms or
3426    other injected tokens that can break highlighting. (yonik)
3427
3428 8. SOLR-282: Snapshooter does not work on Solaris and OS X since the cp command
3429    there does not have the -l option.  Also updated commit/optimize related
3430    scripts to handle both old and new response format.  (bill)
3431
3432 9. SOLR-294: Logging of elapsed time broken on Solaris because the date command
3433    there does not support the %s output format.  (bill)
3434
343510. SOLR-136: Snappuller - "date -d" and locales don't mix.  (JᅵÁᅵrgen Hermann via    bill)
3436
343711. SOLR-333: Changed distributiondump.jsp to use Solr HOME instead of CWD to set path.
3438 
343912. SOLR-393: Removed duplicate contentType from raw-schema.jsp. (bill)
3440
344113. SOLR-413: Requesting a large numbers of documents to be returned (limit)
3442    can result in an out-of-memory exception, even for a small index. (yonik)
3443
344414. The CSV loader incorrectly threw an exception when given
3445    header=true (the default).  (ryan, yonik)
3446
344715. SOLR-449: the python and ruby response writers are now able to correctly
3448    output NaN and Infinity in their respective languages.  (klaas)
3449
345016. SOLR-42: HTMLStripReader tokenizers now preserve correct source
3451    offsets for highlighting.  (Grant Ingersoll via yonik)
3452
345317. SOLR-481: Handle UnknownHostException in _info.jsp (gsingers)
3454
345518. SOLR-324: Add proper support for Long and Doubles in sorting, etc. (gsingers)
3456
345719. SOLR-496: Cache-Control max-age changed to Long so Expires
3458    calculation won't cause overflow.  (Thomas Peuss via hossman)
3459
346020. SOLR-535: Fixed typo (Tokenzied -> Tokenized) in schema.jsp (Thomas Peuss via billa)
3461
346221. SOLR-529: Better error messages from SolrQueryParser when field isn't
3463    specified and there is no defaultSearchField in schema.xml
3464    (Lars Kotthoff via hossman)
3465
346622. SOLR-530: Better error messages/warnings when parsing schema.xml:
3467    field using bogus fieldtype and multiple copyFields to a non-multiValue
3468    field.  (Shalin Shekhar Mangar via hossman)
3469
347023. SOLR-528: Better error message when defaultSearchField is bogus or not
3471    indexed.  (Lars Kotthoff via hossman)
3472
347324. SOLR-533: Fixed tests so they don't use hardcoded port numbers.
3474    (hossman)
3475
347625. SOLR-400: SolrExceptionTest should now handle using OpenDNS as a DNS provider (gsingers)
3477
347826. SOLR-541: Legacy XML update support (provided by SolrUpdateServlet
3479    when no RequestHandler is mapped to "/update") now logs error correctly.
3480    (hossman)
3481
348227. SOLR-267: Changed logging to report number of hits, and also provide a mechanism to add log
3483    messages to be output by the SolrCore via a NamedList toLog member variable. 
3484    (Will Johnson, yseeley, gsingers)
3485   
3486    SOLR-267: Removed adding values to the HTTP headers in SolrDispatchFilter (gsingers)
3487
348828. SOLR-509: Moved firstSearcher event notification to the end of the SolrCore constructor
3489    (Koji Sekiguchi via gsingers)
3490
349129. SOLR-470, SOLR-552, SOLR-544, SOLR-701: Multiple fixes to DateField
3492    regarding lenient parsing of optional milliseconds, and correct
3493    formating using the canonical representation.  LegacyDateField has
3494    been added for people who have come to depend on the existing
3495    broken behavior. (hossman, Stefan Oestreicher)
3496
349730. SOLR-539: Fix for non-atomic long counters and a cast fix to avoid divide
3498    by zero. (Sean Timm via Otis Gospodnetic)
3499
350031. SOLR-514: Added explicit media-type with UTF* charset to *.xsl files that
3501    don't already have one. (hossman)
3502
350332. SOLR-505: Give RequestHandlers the possiblity to suppress the generation
3504    of HTTP caching headers.  (Thomas Peuss via Otis Gospodnetic)
3505
350633. SOLR-553: Handle highlighting of phrase terms better when
3507    hl.usePhraseHighligher=true URL param is used.
3508    (Bojan Smid via Otis Gospodnetic)
3509
351034. SOLR-590: Limitation in pgrep on Linux platform breaks script-utils fixUser.   
3511    (Hannes Schmidt via billa)
3512
351335. SOLR-597: SolrServlet no longer "caches" SolrCore.  This was causing
3514    problems in Resin, and could potentially cause problems for customized
3515    usages of SolrServlet.
3516
351736. SOLR-585: Now sets the QParser on the ResponseBuilder (gsingers)
3518
351937. SOLR-604: If the spellchecking path is relative, make it relative to the Solr Data Directory. 
3520    (Shalin Shekhar Mangar via gsingers)
3521
352238. SOLR-584: Make stats.jsp and stats.xsl more robust.
3523    (Yousef Ourabi and hossman)
3524
352539. SOLR-443: SolrJ: Declare UTF-8 charset on POSTed parameters
3526    to avoid problems with servlet containers that default to latin-1
3527    and allow switching of the exact POST mechanism for parameters
3528    via useMultiPartPost in CommonsHttpSolrServer.
3529    (Lars Kotthoff, Andrew Schurman, ryan, yonik)
3530
353140. SOLR-556: multi-valued fields always highlighted in disparate snippets
3532    (Lars Kotthoff via klaas)
3533
353441. SOLR-501: Fix admin/analysis.jsp UTF-8 input for some other servlet
3535    containers such as Tomcat. (Hiroaki Kawai, Lars Kotthoff via yonik)
3536   
353742. SOLR-616: SpellChecker accuracy configuration is not applied for FileBasedSpellChecker.
3538    Apply it for FileBasedSpellChecker and IndexBasedSpellChecker both.
3539    (shalin)
3540   
354143. SOLR-648: SpellCheckComponent throws NullPointerException on using spellcheck.q request
3542    parameter after restarting Solr, if reload is called but build is not called.
3543    (Jonathan Lee, shalin)
3544
354544. SOLR-598: DebugComponent now always occurs last in the SearchHandler list unless the
3546    components are explicitly declared. (gsingers)
3547
354845. SOLR-676: DataImportHandler should use UpdateRequestProcessor API instead of directly
3549    using UpdateHandler. (shalin)
3550
355146. SOLR-696: Fixed bug in NamedListCodec in regards to serializing Iterable objects.  (gsingers)
3552
355347. SOLR-669: snappuler fix for FreeBSD/Darwin (Richard "Trey" Hyde via Otis Gospodnetic)
3554
355548. SOLR-606: Fixed spell check collation offset issue. (Stefan Oestreicher , Geoffrey Young, gsingers)
3556
355749. SOLR-589: Improved handling of badly formated query strings (Sean Timm via Otis Gospodnetic)
3558
355950. SOLR-749: Allow QParser and ValueSourceParsers to be extended with same name (hossman, gsingers)
3560
3561Other Changes
3562 1. SOLR-135: Moved common classes to org.apache.solr.common and altered the
3563    build scripts to make two jars: apache-solr-1.3.jar and
3564    apache-solr-1.3-common.jar.  This common.jar can be used in client code;
3565    It does not have lucene or junit dependencies.  The original classes
3566    have been replaced with a @Deprecated extended class and are scheduled
3567    to be removed in a later release.  While this change does not affect API
3568    compatibility, it is recommended to update references to these
3569    deprecated classes.  (ryan)
3570
3571 2. SOLR-268: Tweaks to post.jar so it prints the error message from Solr.
3572    (Brian Whitman via hossman)
3573
3574 3. Upgraded to Lucene 2.2.0; June 18, 2007.
3575
3576 4. SOLR-215: Static access to SolrCore.getSolrCore() and SolrConfig.config
3577    have been deprecated in order to support multiple loaded cores.
3578    (Henri Biestro via ryan)
3579
3580 5. SOLR-367: The create method in all TokenFilter and Tokenizer Factories
3581    provided by Solr now declare their specific return types instead of just
3582    using "TokenStream" (hossman)
3583
3584 6. SOLR-396: Hooks add to build system for automatic generation of (stub)
3585    Tokenizer and TokenFilter Factories.
3586    Also: new Factories for all Tokenizers and TokenFilters provided by the
3587    lucene-analyzers-2.2.0.jar -- includes support for German, Chinese,
3588    Russan, Dutch, Greek, Brazilian, Thai, and French.   (hossman)
3589
3590 7. Upgraded to commons-CSV r609327, which fixes escaping bugs and
3591    introduces new escaping and whitespace handling options to
3592    increase compatibility with different formats.  (yonik)
3593
3594 8. Upgraded to Lucene 2.3.0; Jan 23, 2008.
3595
3596 9. SOLR-451: Changed analysis.jsp to use POST instead of GET, also made the input area a
3597    bit bigger (gsingers)
3598
359910. Upgrade to Lucene 2.3.1
3600
360111. SOLR-531: Different exit code for rsyncd-start and snappuller if disabled (Thomas Peuss via billa)
3602
360312. SOLR-550: Clarified DocumentBuilder addField javadocs (gsingers)
3604
360513. Upgrade to Lucene 2.3.2
3606
360714. SOLR-518: Changed luke.xsl to use divs w/css for generating histograms
3608    instead of SVG  (Thomas Peuss via hossman)
3609
361015. SOLR-592: Added ShardParams interface and changed several string literals
3611    to references to constants in CommonParams.
3612    (Lars Kotthoff via Otis Gospodnetic)
3613
361416. SOLR-520: Deprecated unused LengthFilter since already core in
3615    Lucene-Java (hossman)
3616
361717. SOLR-645: Refactored SimpleFacetsTest (Lars Kotthoff via hossman)
3618
361918. SOLR-591: Changed Solrj default value for facet.sort to true (Lars Kotthoff via Shalin)
3620   
362119. Upgraded to Lucene 2.4-dev (r669476) to support SOLR-572 (gsingers)
3622
362320. SOLR-636: Improve/simplify example configs; and make index.jsp
3624    links more resilient to configs loaded via an InputStream
3625    (Lars Kotthoff, hossman)
3626
362721. SOLR-682: Scripts now support FreeBSD (Richard Trey Hyde via gsingers)
3628
362922. SOLR-489: Added in deprecation comments.  (Sean Timm, Lars Kothoff via gsingers)
3630
363123. SOLR-692: Migrated to stable released builds of StAX API 1.0.1 and StAX 1.2.0 (shalin)
363224. Upgraded to Lucene 2.4-dev (r686801) (yonik)
363325. Upgraded to Lucene 2.4-dev (r688745) 27-Aug-2008 (yonik)
363426. Upgraded to Lucene 2.4-dev (r691741) 03-Sep-2008 (yonik)
363527. Replaced the StAX reference implementation with the geronimo
3636    StAX API jar, and the Woodstox StAX implementation. (yonik)
3637
3638Build
3639 1. SOLR-411.  Changed the names of the Solr JARs to use the defacto standard JAR names based on
3640    project-name-version.jar.  This yields, for example:
3641      apache-solr-common-1.3-dev.jar
3642      apache-solr-solrj-1.3-dev.jar
3643      apache-solr-1.3-dev.jar
3644
3645 2. SOLR-479: Added clover code coverage targets for committers and the nightly build.  Requires
3646    the Clover library, as licensed to Apache and only available privately.  To run:
3647             ant -Drun.clover=true clean clover test generate-clover-reports
3648
3649 3. SOLR-510: Nightly release includes client sources. (koji)
3650
3651 4. SOLR-563: Modified the build process to build contrib projects
3652    (Shalin Shekhar Mangar via Otis Gospodnetic)
3653
3654 5. SOLR-673: Modify build file to create javadocs for core, solrj, contrib and "all inclusive" (shalin)
3655
3656 6. SOLR-672: Nightly release includes contrib sources. (Jeremy Hinegardner, shalin)
3657
3658 7. SOLR-586: Added ant target and POM files for building maven artifacts of the Solr core, common,
3659              client and contrib. The target can publish artifacts with source and javadocs.
3660              (Spencer Crissman, Craig McClanahan, shalin)
3661
3662================== Release 1.2 ==================
3663
3664Upgrading from Solr 1.1
3665-------------------------------------
3666IMPORTANT UPGRADE NOTE: In a master/slave configuration, all searchers/slaves
3667should be upgraded before the master!  If the master were to be updated
3668first, the older searchers would not be able to read the new index format.
3669
3670Older Apache Solr installations can be upgraded by replacing
3671the relevant war file with the new version.  No changes to configuration
3672files should be needed. 
3673
3674This version of Solr contains a new version of Lucene implementing
3675an updated index format.  This version of Solr/Lucene can still read
3676and update indexes in the older formats, and will convert them to the new
3677format on the first index change.  One change in the new index format
3678is that all "norms" are kept in a single file, greatly reducing the number
3679of files per segment. Users of compound file indexes will want to consider
3680converting to the non-compound format for faster indexing and slightly better
3681search concurrency.
3682
3683The JSON response format for facets has changed to make it easier for
3684clients to retain sorted order.  Use json.nl=map explicitly in clients
3685to get the old behavior, or add it as a default to the request handler
3686in solrconfig.xml
3687
3688The Lucene based Solr query syntax is slightly more strict.
3689A ':' in a field value must be escaped or the whole value must be quoted.
3690
3691The Solr "Request Handler" framework has been updated in two key ways:
3692First, if a Request Handler is registered in solrconfig.xml with a name
3693starting with "/" then it can be accessed using path-based URL, instead of
3694using the legacy "/select?qt=name" URL structure.  Second, the Request
3695Handler framework has been extended making it possible to write Request
3696Handlers that process streams of data for doing updates, and there is a
3697new-style Request Handler for XML updates given the name of "/update" in
3698the example solrconfig.xml.  Existing installations without this "/update"
3699handler will continue to use the old update servlet and should see no
3700changes in behavior.  For new-style update handlers, errors are now
3701reflected in the HTTP status code, Content-type checking is more strict,
3702and the response format has changed and is controllable via the wt
3703parameter.
3704
3705
3706
3707Detailed Change List
3708--------------------
3709
3710New Features
3711 1. SOLR-82: Default field values can be specified in the schema.xml.
3712    (Ryan McKinley via hossman)
3713
3714 2. SOLR-89: Two new TokenFilters with corresponding Factories...
3715    * TrimFilter - Trims leading and trailing whitespace from Tokens
3716    * PatternReplaceFilter - applies a Pattern to each token in the
3717      stream, replacing match occurances with a specified replacement.
3718    (hossman)
3719
3720 3. SOLR-91: allow configuration of a limit of the number of searchers
3721    that can be warming in the background.  This can be used to avoid
3722    out-of-memory errors, or contention caused by more and more searchers
3723    warming in the background.  An error is thrown if the limit specified
3724    by maxWarmingSearchers in solrconfig.xml is exceeded. (yonik)
3725
3726 4. SOLR-106: New faceting parameters that allow specification of a
3727    minimum count for returned facets (facet.mincount), paging through facets
3728    (facet.offset, facet.limit), and explicit sorting (facet.sort).
3729    facet.zeros is now deprecated.  (yonik)
3730
3731 5. SOLR-80: Negative queries are now allowed everywhere.  Negative queries
3732    are generated and cached as their positive counterpart, speeding
3733    generation and generally resulting in smaller sets to cache.
3734    Set intersections in SolrIndexSearcher are more efficient,
3735    starting with the smallest positive set, subtracting all negative
3736    sets, then intersecting with all other positive sets.  (yonik)
3737
3738 6. SOLR-117: Limit a field faceting to constraints with a prefix specified
3739    by facet.prefix or f.<field>.facet.prefix. (yonik)
3740
3741 7. SOLR-107: JAVA API: Change NamedList to use Java5 generics
3742    and implement Iterable<Map.Entry> (Ryan McKinley via yonik)
3743
3744 8. SOLR-104: Support for "Update Plugins" -- RequestHandlers that want
3745    access to streams of data for doing updates.  ContentStreams can come
3746    from the raw POST body, multi-part form data, or remote URLs.
3747    Included in this change is a new SolrDispatchFilter that allows
3748    RequestHandlers registered with names that begin with a "/" to be
3749    accessed using a URL structure based on that name.
3750    (Ryan McKinley via hossman)
3751
3752 9. SOLR-126: DirectUpdateHandler2 supports autocommitting after a specified time
3753    (in ms), using <autoCommit><maxTime>10000</maxTime></autoCommit>.
3754    (Ryan McKinley via klaas).
3755
375610. SOLR-116: IndexInfoRequestHandler added. (Erik Hatcher)
3757
375811. SOLR-79: Add system property ${<sys.prop>[:<default>]} substitution for
3759    configuration files loaded, including schema.xml and solrconfig.xml.
3760    (Erik Hatcher with inspiration from Andrew Saar)
3761
376212. SOLR-149: Changes to make Solr more easily embeddable, in addition
3763    to logging which request handler handled each request.
3764    (Ryan McKinley via yonik)
3765
376613. SOLR-86: Added standalone Java-based command-line updater.
3767    (Erik Hatcher via Bertrand Delecretaz)
3768
376914. SOLR-152: DisMaxRequestHandler now supports configurable alternate
3770    behavior when q is not specified.  A "q.alt" param can be specified
3771    using SolrQueryParser syntax as a mechanism for specifying what query
3772    the dismax handler should execute if the main user query (q) is blank.
3773    (Ryan McKinley via hossman)
3774
377515. SOLR-158: new "qs" (Query Slop) param for DisMaxRequestHandler
3776    allows for specifying the amount of default slop to use when parsing
3777    explicit phrase queries from the user.
3778    (Adam Hiatt via hossman)
3779
378016. SOLR-81: SpellCheckerRequestHandler that uses the SpellChecker from
3781    the Lucene contrib.
3782    (Otis Gospodnetic and Adam Hiatt)   
3783
378417. SOLR-182: allow lazy loading of request handlers on first request.
3785    (Ryan McKinley via yonik)
3786
378718. SOLR-81: More SpellCheckerRequestHandler enhancements, inlcluding
3788    support for relative or absolute directory path configurations, as
3789    well as RAM based directory. (hossman)   
3790
379119. SOLR-197: New parameters for input: stream.contentType for specifying
3792    or overriding the content type of input, and stream.file for reading
3793    local files. (Ryan McKinley via yonik)
3794
379520. SOLR-66: CSV data format for document additions and updates. (yonik)
3796
379721. SOLR-184: add echoHandler=true to responseHeader, support echoParams=all
3798    (Ryan McKinley via ehatcher)
3799   
380022. SOLR-211: Added a regex PatternTokenizerFactory.  This extracts tokens
3801    from the input string using a regex Pattern. (Ryan McKinley)
3802   
380323. SOLR-162: Added a "Luke" request handler and other admin helpers.
3804    This exposes the system status through the standard requestHandler
3805    framework. (ryan)
3806   
380724. SOLR-212: Added a DirectSolrConnection class.  This lets you access
3808    solr using the standard request/response formats, but does not require
3809    an HTTP connection.  It is designed for embedded applications. (ryan)   
3810
381125. SOLR-204: The request dispatcher (added in SOLR-104) can handle
3812    calls to /select.  This offers uniform error handling for /update and
3813    /select.  To enable this behavior, you must add:
3814      <requestDispatcher handleSelect="true" > to your solrconfig.xml
3815    See the example solrconfig.xml for details.  (ryan)
3816
381726. SOLR-170: StandardRequestHandler now supports a "sort" parameter.
3818    Using the ';' syntax is still supported, but it is recommended to
3819    transition to the new syntax. (ryan)
3820
382127. SOLR-181: The index schema now supports "required" fields.  Attempts
3822    to add a document without a required field will fail, returning a
3823    descriptive error message.  By default, the uniqueKey field is
3824    a required field.  This can be disabled by setting required=false
3825    in schema.xml.  (Greg Ludington via ryan)
3826
382728. SOLR-217: Fields configured in the schema to be neither indexed or
3828    stored will now be quietly ignored by Solr when Documents are added.
3829    The example schema has a comment explaining how this can be used to
3830    ignore any "unknown" fields.
3831    (Will Johnson via hossman)
3832
383329. SOLR-227: If schema.xml defines multiple fieldTypes, fields, or
3834    dynamicFields with the same name, a severe error will be logged rather
3835    then quietly continuing. Depending on the <abortOnConfigurationError>
3836    settings, this may halt the server.  Likewise, if solrconfig.xml
3837    defines multiple RequestHandlers with the same name it will also add
3838    an error.  (ryan)
3839
384030. SOLR-226: Added support for dynamic field as the destination of a
3841    copyField using glob (*) replacement. (ryan)
3842   
384331. SOLR-224: Adding a PhoneticFilterFactory that uses apache commons codec
3844    language encoders to build phonetically similar tokens.  This currently
3845    supports: DoubleMetaphone, Metaphone, Soundex, and RefinedSoundex (ryan)
3846
384732. SOLR-199: new n-gram tokenizers available via NGramTokenizerFactory
3848    and EdgeNGramTokenizerFactory. (Adam Hiatt via yonik)
3849
385033. SOLR-234: TrimFilter can update the Token's startOffset and endOffset
3851    if updateOffsets="true".  By default the Token offsets are unchanged.
3852    (ryan)
3853
385434. SOLR-208: new example_rss.xsl and example_atom.xsl to provide more
3855    examples for people about the Solr XML response format and how they
3856    can transform it to suit different needs.
3857    (Brian Whitman via hossman)
3858
385935. SOLR-249: Deprecated SolrException( int, ... ) constructors in favor
3860    of constructors that takes an ErrorCode enum.  This will ensure that
3861    all SolrExceptions use a valid HTTP status code. (ryan)
3862   
386336. SOLR-386: Abstracted SolrHighlighter and moved existing implementation
3864    to DefaultSolrHighlighter.  Adjusted SolrCore and solrconfig.xml so
3865    that highlighter is configurable via a class attribute.  Allows users
3866    to use their own highlighter implementation. (Tricia Williams via klaas)
3867       
3868Changes in runtime behavior
3869 1. Highlighting using DisMax will only pick up terms from the main
3870    user query, not boost or filter queries (klaas).
3871
3872 2. SOLR-125: Change default of json.nl to flat, change so that
3873    json.nl only affects items where order matters (facet constraint
3874    listings).  Fix JSON output bug for null values.  Internal JAVA API:
3875    change most uses of NamedList to SimpleOrderedMap. (yonik)
3876
3877 3. A new method "getSolrQueryParser" has been added to the IndexSchema
3878    class for retrieving a new SolrQueryParser instance with all options
3879    specified in the schema.xml's <solrQueryParser> block set.  The
3880    documentation for the SolrQueryParser constructor and it's use of
3881    IndexSchema have also been clarified.
3882    (Erik Hatcher and hossman)
3883
3884 4. DisMaxRequestHandler's bq, bf, qf, and pf parameters can now accept
3885    multiple values (klaas).
3886
3887 5. Query are re-written before highlighting is performed.  This enables
3888    proper highlighting of prefix and wildcard queries (klaas).
3889
3890 6. A meaningful exception is raised when attempting to add a doc missing
3891    a unique id if it is declared in the schema and allowDups=false.
3892    (ryan via klaas)
3893
3894 7. SOLR-183: Exceptions with error code 400 are raised when
3895    numeric argument parsing fails.  RequiredSolrParams class added
3896    to facilitate checking for parameters that must be present.
3897    (Ryan McKinley, J.J. Larrea via yonik)
3898
3899 8. SOLR-179: By default, solr will abort after any severe initalization
3900    errors.  This behavior can be disabled by setting:
3901    <abortOnConfigurationError>false</abortOnConfigurationError>
3902    in solrconfig.xml (ryan)
3903
3904 9. The example solrconfig.xml maps /update to XmlUpdateRequestHandler using
3905    the new request dispatcher (SOLR-104).  This requires posted content to
3906    have a valid contentType: curl -H 'Content-type:text/xml; charset=utf-8'
3907    The response format matches that of /select and returns standard error
3908    codes.  To enable solr1.1 style /update, do not map "/update" to any
3909    handler in solrconfig.xml (ryan)
3910
391110. SOLR-231: If a charset is not specified in the contentType,
3912    ContentStream.getReader() will use UTF-8 encoding.  (ryan)
3913
391411. SOLR-230: More options for post.jar to support stdin, xml on the
3915    commandline, and defering commits.  Tutorial modified to take
3916    advantage of these options so there is no need for curl.
3917    (hossman)
3918
391912. SOLR-128: Upgraded Jetty to the latest stable release 6.1.3 (ryan)
3920   
3921Optimizations
3922 1. SOLR-114: HashDocSet specific implementations of union() and andNot()
3923    for a 20x performance improvement for those set operations, and a new
3924    hash algorithm speeds up exists() by 10% and intersectionSize() by 8%.
3925    (yonik)
3926   
3927 2. SOLR-115: Solr now uses BooleanQuery.clauses() instead of
3928    BooleanQuery.getClauses() in any situation where there is no risk of
3929    modifying the original query.
3930    (hossman)
3931
3932 3. SOLR-221: Speed up sorted faceting on multivalued fields by ~60%
3933    when the base set consists of a relatively large portion of the
3934    index. (yonik)
3935
3936 4. SOLR-221: Added a facet.enum.cache.minDf parameter which avoids
3937    using the filterCache for terms that match few documents, trading
3938    decreased memory usage for increased query time. (yonik)
3939
3940Bug Fixes
3941 1. SOLR-87: Parsing of synonym files did not correctly handle escaped
3942    whitespace such as \r\n\t\b\f. (yonik)
3943
3944 2. SOLR-92: DOMUtils.getText (used when parsing config files) did not
3945    work properly with many DOM implementations when dealing with
3946    "Attributes". (Ryan McKinley via hossman)
3947
3948 3. SOLR-9,SOLR-99: Tighten up sort specification error checking, throw
3949    exceptions for missing sort specifications or a sort on a non-indexed
3950    field. (Ryan McKinley via yonik)
3951   
3952 4. SOLR-145: Fix for bug introduced in SOLR-104 where some Exceptions
3953    were being ignored by all "out of the box" RequestHandlers. (hossman)
3954     
3955 5. SOLR-166: JNDI solr.home code refactoring.  SOLR-104 moved
3956    some JNDI related code to the init method of a Servlet Filter -
3957    according to the Servlet Spec, all Filter's should be initialized
3958    prior to initializing any Servlets, but this is not the case in at
3959    least one Servlet Container (Resin).  This "bug fix" refactors
3960    this JNDI code so that it should be executed the first time any
3961    attempt is made to use the solr.home dir.
3962    (Ryan McKinley via hossman)
3963
3964 6. SOLR-173: Bug fix to SolrDispatchFilter to reduce "too many open
3965    files" problem was that SolrDispatchFilter was not closing requests
3966    when finished.  Also modified ResponseWriters to only fetch a Searcher
3967    reference if necessary for writing out DocLists.
3968    (Ryan McKinley via hossman)
3969
3970 7. SOLR-168: Fix display positioning of multiple tokens at the same
3971    position in analysis.jsp (yonik)
3972
3973 8. SOLR-167: The SynonymFilter sometimes generated incorrect offsets when
3974    multi token synonyms were mached in the source text. (yonik)
3975
3976 9. SOLR-188: bin scripts do not support non-default webapp names.  Added "-U"
3977    option to specify a full path to the update url, overriding the
3978    "-h" (hostname), "-p" (port) and "-w" (webapp name) parameters.
3979    (Jeff Rodenburg via billa)
3980
398110. SOLR-198: RunExecutableListener always waited for the process to
3982    finish, even when wait="false" was set. (Koji Sekiguchi via yonik)
3983
398411. SOLR-207: Changed distribution scripts to remove recursive find
3985    and avoid use of "find -maxdepth" on platforms where it is not
3986    supported. (yonik)
3987
398812. SOLR-222: Changing writeLockTimeout in solrconfig.xml did not
3989    change the effective timeout. (Koji Sekiguchi via yonik)
3990
399113. Changed the SOLR-104 RequestDispatcher so that /select?qt=xxx can not
3992    access handlers that start with "/".  This makes path based authentication
3993    possible for path based request handlers.  (ryan)
3994
399514. SOLR-214: Some servlet containers (including Tomcat and Resin) do not
3996    obey the specified charset.  Rather then letting the the container handle
3997    it solr now uses the charset from the header contentType to decode posted
3998    content.  Using the contentType: "text/xml; charset=utf-8" will force
3999    utf-8 encoding.  If you do not specify a contentType, it will use the
4000    platform default.  (Koji Sekiguchi via ryan)
4001
400215. SOLR-241: Undefined system properties used in configuration files now
4003    cause a clear message to be logged rather than an obscure exception thrown.
4004    (Koji Sekiguchi via ehatcher)
4005
4006Other Changes
4007 1. Updated to Lucene 2.1
4008
4009 2. Updated to Lucene 2007-05-20_00-04-53
4010
4011================== Release 1.1.0 ==================
4012
4013Status
4014------
4015This is the first release since Solr joined the Incubator, and brings many
4016new features and performance optimizations including highlighting,
4017faceted browsing, and JSON/Python/Ruby response formats.
4018
4019
4020Upgrading from previous Solr versions
4021-------------------------------------
4022Older Apache Solr installations can be upgraded by replacing
4023the relevant war file with the new version.  No changes to configuration
4024files are needed and the index format has not changed.
4025
4026The default version of the Solr XML response syntax has been changed to 2.2.
4027Behavior can be preserved for those clients not explicitly specifying a
4028version by adding a default to the request handler in solrconfig.xml
4029
4030By default, Solr will no longer use a searcher that has not fully warmed,
4031and requests will block in the meantime.  To change back to the previous
4032behavior of using a cold searcher in the event there is no other
4033warm searcher, see the useColdSearcher config item in solrconfig.xml
4034
4035The XML response format when adding multiple documents to the collection
4036in a single <add> command has changed to return a single <result>.
4037
4038
4039Detailed Change List
4040--------------------
4041
4042New Features
4043 1. added support for setting Lucene's positionIncrementGap
4044 2. Admin: new statistics for SolrIndexSearcher
4045 3. Admin: caches now show config params on stats page
4046 3. max() function added to FunctionQuery suite
4047 4. postOptimize hook, mirroring the functionallity of the postCommit hook,
4048    but only called on an index optimize.
4049 5. Ability to HTTP POST query requests to /select in addition to HTTP-GET
4050 6. The default search field may now be overridden by requests to the
4051    standard request handler using the df query parameter. (Erik Hatcher)
4052 7. Added DisMaxRequestHandler and SolrPluginUtils. (Chris Hostetter)
4053 8. Support for customizing the QueryResponseWriter per request
4054    (Mike Baranczak / SOLR-16 / hossman)
4055 9. Added KeywordTokenizerFactory (hossman)
405610. copyField accepts dynamicfield-like names as the source.
4057    (Darren Erik Vengroff via yonik, SOLR-21)
405811. new DocSet.andNot(), DocSet.andNotSize() (yonik)
405912. Ability to store term vectors for fields. (Mike Klaas via yonik, SOLR-23)
406013. New abstract BufferedTokenStream for people who want to write
4061    Tokenizers or TokenFilters that require arbitrary buffering of the
4062    stream. (SOLR-11 / yonik, hossman)
406314. New RemoveDuplicatesToken - useful in situations where
4064    synonyms, stemming, or word-deliminater-ing produce identical tokens at
4065    the same position. (SOLR-11 / yonik, hossman)
406615. Added highlighting to SolrPluginUtils and implemented in StandardRequestHandler
4067    and DisMaxRequestHandler (SOLR-24 / Mike Klaas via hossman,yonik)
406816. SnowballPorterFilterFactory language is configurable via the "language"
4069    attribute, with the default being "English".  (Bertrand Delacretaz via yonik, SOLR-27)
407017. ISOLatin1AccentFilterFactory, instantiates ISOLatin1AccentFilter to remove accents.
4071    (Bertrand Delacretaz via yonik, SOLR-28)
407218. JSON, Python, Ruby QueryResponseWriters: use wt="json", "python" or "ruby"
4073    (yonik, SOLR-31)
407419. Make web admin pages return UTF-8, change Content-type declaration to include a
4075    space between the mime-type and charset (Philip Jacob, SOLR-35)
407620. Made query parser default operator configurable via schema.xml:
4077         <solrQueryParser defaultOperator="AND|OR"/>
4078    The default operator remains "OR".
407921. JAVA API: new version of SolrIndexSearcher.getDocListAndSet() which takes
4080    flags (Greg Ludington via yonik, SOLR-39)
408122. A HyphenatedWordsFilter, a text analysis filter used during indexing to rejoin
4082    words that were hyphenated and split by a newline. (Boris Vitez via yonik, SOLR-41)
408323. Added a CompressableField base class which allows fields of derived types to
4084    be compressed using the compress=true setting.  The field type also gains the
4085    ability to specify a size threshold at which field data is compressed.
4086    (klaas, SOLR-45)
408724. Simple faceted search support for fields (enumerating terms)
4088    and arbitrary queries added to both StandardRequestHandler and
4089    DisMaxRequestHandler. (hossman, SOLR-44)
409025. In addition to specifying default RequestHandler params in the
4091    solrconfig.xml, support has been added for configuring values to be
4092    appended to the multi-val request params, as well as for configuring
4093    invariant params that can not overridden in the query. (hossman, SOLR-46)
409426. Default operator for query parsing can now be specified with q.op=AND|OR
4095    from the client request, overriding the schema value. (ehatcher)
409627. New XSLTResponseWriter does server side XSLT processing of XML Response.
4097    In the process, an init(NamedList) method was added to QueryResponseWriter
4098    which works the same way as SolrRequestHandler.
4099    (Bertrand Delacretaz / SOLR-49 / hossman)
410028. json.wrf parameter adds a wrapper-function around the JSON response,
4101    useful in AJAX with dynamic script tags for specifying a JavaScript
4102    callback function. (Bertrand Delacretaz via yonik, SOLR-56)
410329. autoCommit can be specified every so many documents added (klaas, SOLR-65)
410430. ${solr.home}/lib directory can now be used for specifying "plugin" jars
4105    (hossman, SOLR-68)
410631. Support for "Date Math" relative "NOW" when specifying values of a
4107    DateField in a query -- or when adding a document.
4108    (hossman, SOLR-71)
410932. useColdSearcher control in solrconfig.xml prevents the first searcher
4110    from being used before it's done warming.  This can help prevent
4111    thrashing on startup when multiple requests hit a cold searcher.
4112    The default is "false", preventing use before warm. (yonik, SOLR-77)
4113   
4114Changes in runtime behavior
4115 1. classes reorganized into different packages, package names changed to Apache
4116 2. force read of document stored fields in QuerySenderListener
4117 3. Solr now looks in ./solr/conf for config, ./solr/data for data
4118    configurable via solr.solr.home system property
4119 4. Highlighter params changed to be prefixed with "hl."; allow fragmentsize
4120    customization and per-field overrides on many options
4121    (Andrew May via klaas, SOLR-37)
4122 5. Default param values for DisMaxRequestHandler should now be specified
4123    using a '<lst name="defaults">...</lst>' init param, for backwards
4124    compatability all init prams will be used as defaults if an init param
4125    with that name does not exist. (hossman, SOLR-43)
4126 6. The DisMaxRequestHandler now supports multiple occurances of the "fq"
4127    param. (hossman, SOLR-44)
4128 7. FunctionQuery.explain now uses ComplexExplanation to provide more
4129    accurate score explanations when composed in a BooleanQuery.
4130    (hossman, SOLR-25)
4131 8. Document update handling locking is much sparser, allowing performance gains
4132    through multiple threads.  Large commits also might be faster (klaas, SOLR-65)
4133 9. Lazy field loading can be enabled via a solrconfig directive.  This will be faster when
4134    not all stored fields are needed from a document (klaas, SOLR-52)   
413510. Made admin JSPs return XML and transform them with new XSL stylesheets
4136    (Otis Gospodnetic, SOLR-58)
413711. If the "echoParams=explicit" request parameter is set, request parameters are copied
4138    to the output. In an XML output, they appear in new <lst name="params"> list inside
4139    the new <lst name="responseHeader"> element, which replaces the old <responseHeader>.
4140    Adding a version=2.1 parameter to the request produces the old format, for backwards
4141    compatibility (bdelacretaz and yonik, SOLR-59).
4142
4143Optimizations
4144 1. getDocListAndSet can now generate both a DocList and a DocSet from a
4145    single lucene query.
4146 2. BitDocSet.intersectionSize(HashDocSet) no longer generates an intermediate
4147    set
4148 3. OpenBitSet completed, replaces BitSet as the implementation for BitDocSet.
4149    Iteration is faster, and BitDocSet.intersectionSize(BitDocSet) and unionSize
4150    is between 3 and 4 times faster. (yonik, SOLR-15)
4151 4. much faster unionSize when one of the sets is a HashDocSet: O(smaller_set_size)
4152 5. Optimized getDocSet() for term queries resulting in a 36% speedup of facet.field
4153    queries where DocSets aren't cached (for example, if the number of terms in the field
4154    is larger than the filter cache.) (yonik)
4155 6. Optimized facet.field faceting by as much as 500 times when the field has
4156    a single token per document (not multiValued & not tokenized) by using the
4157    Lucene FieldCache entry for that field to tally term counts.  The first request
4158    utilizing the FieldCache will take longer than subsequent ones.
4159
4160Bug Fixes
4161 1. Fixed delete-by-id for field types who's indexed form is different
4162    from the printable form (mainly sortable numeric types).
4163 2. Added escaping of attribute values in the XML response (Erik Hatcher)
4164 3. Added empty extractTerms() to FunctionQuery to enable use in
4165    a MultiSearcher (Yonik)
4166 4. WordDelimiterFilter sometimes lost token positionIncrement information
4167 5. Fix reverse sorting for fields were sortMissingFirst=true
4168    (Rob Staveley, yonik)
4169 6. Worked around a Jetty bug that caused invalid XML responses for fields
4170    containing non ASCII chars.  (Bertrand Delacretaz via yonik, SOLR-32)
4171 7. WordDelimiterFilter can throw exceptions if configured with both
4172    generate and catenate off.  (Mike Klaas via yonik, SOLR-34)
4173 8. Escape '>' in XML output (because ]]> is illegal in CharData)
4174 9. field boosts weren't being applied and doc boosts were being applied to fields (klaas)
417510. Multiple-doc update generates well-formed xml (klaas, SOLR-65)
417611. Better parsing of pingQuery from solrconfig.xml (hossman, SOLR-70)
417712. Fixed bug with "Distribution" page introduced when Versions were
4178    added to "Info" page (hossman)
417913. Fixed HTML escaping issues with user input to analysis.jsp and action.jsp
4180    (hossman, SOLR-74)
4181
4182Other Changes
4183 1. Upgrade to Lucene 2.0 nightly build 2006-06-22, lucene SVN revision 416224,
4184    http://svn.apache.org/viewvc/lucene/java/trunk/CHANGES.txt?view=markup&pathrev=416224
4185 2. Modified admin styles to improve display in Internet Explorer (Greg Ludington via billa, SOLR-6)
4186 3. Upgrade to Lucene 2.0 nightly build 2006-07-15, lucene SVN revision 422302,
4187 4. Included unique key field name/value (if available) in log message of add (billa, SOLR-18)
4188 5. Updated to Lucene 2.0 nightly build 2006-09-07, SVN revision 462111
4189 6. Added javascript to catch empty query in admin query forms (Tomislav Nakic-Alfirevic via billa, SOLR-48
4190 7. blackslash escape * in ssh command used in snappuller for zsh compatibility, SOLR-63
4191 8. check solr return code in admin scripts, SOLR-62
4192 9. Updated to Lucene 2.0 nightly build 2006-11-15, SVN revision 475069
419310. Removed src/apps containing the legacy "SolrTest" app (hossman, SOLR-3)
419411. Simplified index.jsp and form.jsp, primarily by removing/hiding XML
4195    specific params, and adding an option to pick the output type. (hossman)
419612. Added new numeric build property "specversion" to allow clean
4197    MANIFEST.MF files (hossman)
419813. Added Solr/Lucene versions to "Info" page (hossman)
419914. Explicitly set mime-type of .xsl files in web.xml to
4200    application/xslt+xml (hossman)
420115. Config parsing should now work useing DOM Level 2 parsers -- Solr
4202    previously relied on getTextContent which is a DOM Level 3 addition
4203    (Alexander Saar via hossman, SOLR-78)
4204
42052006/01/17 Solr open sourced, moves to Apache Incubator
Note: See TracBrowser for help on using the repository browser.