LUCENE-4060: Fix a synchronization bug in
DirectoryTaxonomyWriter.addTaxonomies(). Also, the method has been renamed to
addTaxonomy and now takes only one Directory and one OrdinalMap.
(Shai Erera, Gilad Barkai)

LUCENE-4209: Fix FSTCompletionLookup to close its sorter, so that it won't
leave temp files behind in /tmp. Fix SortedTermFreqIteratorWrapper to not
leave temp files behind in /tmp on Windows. Fix Sort to not leave
temp files behind when /tmp is a separate volume.
(Uwe Schindler, Robert Muir)

LUCENE-4165: Removed closing of the Reader used to read the affix file in
HunspellDictionary. Consumers are now responsible for closing all InputStreams
once the Dictionary has been instantiated.
(Torsten Krah, Uwe Schindler, Chris Male)

LUCENE-3626: The internal implementation classes in PKIndexSplitter
and MultiPassIndexSplitter were made private as they now work
per segment.
(Uwe Schindler)

LUCENE-3807: Cleaned up Suggest / Lookup API. Term weights (freqs) are now
64bit signed integers instead of 32bit floats. Sorting of terms is now a
disk based merge sort instead of an in-memory sort. The Lookup API now
accepts and returns CharSequence instead of String which should be converted
into a String before used in a datastructure that relies on hashCode / equals.
(Simon Willnauer)

LUCENE-2906: Added CJKBigramFilter that forms bigrams from StandardTokenizer or
ICUTokenizer CJK tokens, and CJKWidthFilter that normalizes halfwidth/fullwidth.
This filter supports unicode supplementary characters and you can toggle whether
bigrams are formed for each of Han/Hiragana/Katakana/Hangul independently. Deprecates
CJKTokenizer.
(Tom Burton-West, Robert Muir)

LUCENE-3634: IndexReader's static main method was moved to a new
tool, CompoundFileExtractor, in contrib/misc.
(Mike McCandless)

SOLR-3020: Add KeywordAttribute support to HunspellStemFilter. Terms marked as
keywords are not modified by the stemmer.
(Simon Willnauer, Helge Jenssen)

LUCENE-3901: Added katakana stem filter to normalize common spelling variants
with/without trailing long vowel marks. The filter is used in both KuromojiAnalyzer
and the "text_ja" field type in schema.xml.
(Christian Moen)

LUCENE-3915: Add Japanese filter to replace a term attribute with its reading.
(Koji Sekiguchi, Robert Muir, Christian Moen)

LUCENE-3685: Add ToChildBlockJoinQuery and renamed previous
BlockJoinQuery to ToParentBlockJoinQuery, so that you can now do
joins in both parent to child and child to parent directions.
(Mike McCandless)

LUCENE-3596: DirectoryTaxonomyWriter.openIndexWriter() now takes an
openIndexWriter parameter rather than just an open-mode.
(Doron Cohen)

LUCENE-3606: FieldNormModifier was deprecated, because IndexReader's
setNorm() was deprecated. Furthermore, this class is broken, as it does
not take position overlaps into account while recalculating norms.
(Uwe Schindler, Robert Muir)

SOLR-2888: FSTSuggester refactoring: internal storage is now UTF-8,
external sorting (on disk) prevents OOMs even with large data sets
(the bottleneck is now FST construction), code cleanups and API cleanups.
You should use FSTCompletionLookup (the old FSTLookup impl is deprecated).
(Dawid Weiss, Robert Muir)

LUCENE-3600: BlockJoinQuery now supports parent docs that have no
children (such docs will never match, but BJQ was tripping an
assert if such a parent doc was the first doc in the segment).
(Shay Banon, Mike McCandless)

LUCENE-3668: For a multi-token synonym mapping to a single token,
SynonymFilter will now set the start offset of the synonym token to
the start offset of the first matched token, and the end offset of
the synonym token to the end offset of the last matched token.
This way if the synonym token is used for highlighting, it will
cover all tokens it had matched.
(Koji Sekiguchi, Robert Muir,
Mike McCandless)

LUCENE-3742: When SynonymFilter has an output extending beyond the
input tokens, it now sets the start and end offset to the same
values for the last token (not 0, 0).
(Robert Muir, Mike
McCandless)

LUCENE-3794: DirectoryTaxonomyWriter could lose the INDEX_CREATE_TIME
property if multiple commits with userData were done. It now always records
the creation time in the taxonomy index commitData, and reads it from the
index in the constructor.
(Shai Erera)

LUCENE-3831: avoid NPE if the SpanQuery has a null field (eg a
SpanOrQuery with no clauses added).
(Alan Woodward via Mike
McCandless).

LUCENE-3894: ICUTokenizer, NGramTokenizer and EdgeNGramTokenizer
could stop early if the Reader only partially fills the provided
buffer.
(Mike McCandless)

LUCENE-2564: WordListLoader is now flaged as @lucene.internal. All methods in
WordListLoader now return CharArraySet/Map and expect Reader instances for
efficiency. Utilities to open Readers from Files, InputStreams or Java
resources were added to IOUtils.
(Simon Willnauer, Robert Muir)

LUCENE-3458: Change BooleanFilter to have only a single clauses ArrayList
(so toString() works in order). It now behaves more like BooleanQuery,
implements Iterable<FilterClause>, and allows adding Filters without
creating FilterClause.
(Uwe Schindler)

LUCENE-3445: Added SearcherManager, to manage sharing and reopening
IndexSearchers across multiple search threads. IndexReader's
refCount is used to safely close the reader only once all threads are done
using it.
(Michael McCandless)

LUCENE-3486: Add SearcherLifetimeManager, to manage retrieving the
same searcher used in a previous search to ensure follow-on actions
(next page, drill down, etc.) use the same searcher as before
(Mike
McCandless)

LUCENE-3431: Deprecated QueryAutoStopWordAnalyzer.addStopWords* since they
prevent reuse. Stopwords are now to be computed when the Analyzer is instantiated.
If new stopwords are needed, a new Analyzer instance should be created.
(Chris Male)

LUCENE-3434: Deprecated ShingleAnalyzerWrapper.set* since they prevent reuse. The
Analyzer should be configured at instantiation. Deprecated PerFieldAnalyzerWrapper.addAnalyzer
since it also prevents reuse. Analyzers per field should be configured at instantiation.
(Chris Male)

LUCENE-3436: Add SuggestMode to the spellchecker, so you can specify the strategy
for suggesting related terms.
(James Dyer via Robert Muir)

LUCENE-3579: DirectoryTaxonomyWriter throws AlreadyClosedException if it was
closed, but any of its API methods are called.
(Shai Erera)

LUCENE-3573: TaxonomyReader.refresh() signature was modified from void to
boolean, now returning an indication if any change was detected. It
throws a new InconsistentTaxonomyException if the taxonomy was recreated
since TaxonomyReader was last opened or refreshed.
(Doron Cohen)

LUCENE-3508: Decompounders based on CompoundWordTokenFilterBase can now be
used with custom attributes. All those attributes are preserved and set on all
added decompounded tokens.
(Spyros Kapnissis, Uwe Schindler)

LUCENE-3573: TaxonomyReader.refresh() was broken in case that the taxonomy was
recreated since the taxonomy reader was last refreshed or opened. TR.refresh()
now detects this situation and throws an InconsistentTaxonomyException.
When obtaining such an exception the application should open a new taxonomy
reader. Old taxonomy reader should be closed, once not more used.
(Doron Cohen)

LUCENE-3079: a new facet module which provides faceted indexing & search
capabilities. It allows managing a taxonomy of categories, and index them
with documents. It also provides search API for aggregating (e.g. count)
the weights of the categories that are relevant to the search results.
(Shai Erera)

LUCENE-3171: Added BlockJoinQuery and BlockJoinCollector, under the
new contrib/join module, to enable searches that require joining
between parent and child documents. Joined (children + parent)
documents must be indexed as a document block, using
IndexWriter.add/UpdateDocuments
(Mark Harwood, Mike McCandless)

LUCENE-1768: StandardQueryConfigHandler now uses NumericFieldConfigListener
to set a NumericConfig to its corresponding FieldConfig;
StandardQueryTreeBuilder now uses DummyQueryNodeBuilder for
NumericQueryNodes and uses NumericRangeQueryNodeBuilder for
NumericRangeQueryNodes; StandardQueryNodeProcessorPipeline now executes
NumericQueryNodeProcessor followed by NumericRangeQueryNodeProcessor
right after LowercaseExpandedTermsQueryNodeProcessor
(Vinicius Barros via Uwe Schindler)

LUCENE-3296: PKIndexSplitter & MultiPassIndexSplitter now have version
constructors. PKIndexSplitter accepts a IndexWriterConfig for each of
the target indexes.
(Simon Willnauer, Jason Rutherglen)

LUCENE-2979: queryparser configuration API located under
org.apache.lucene.queryParser.core.config has been simplified and
Attribute objects no longer should be used to configure query parsers. Now
any configuration should be done through AbstractQueryConfig's set and get
methods. The old API, which uses Attributes objects, is still in place, however
it has been deprecated and will be removed soon.
(Phillipe Ramalho via Adriano Crestani)

LUCENE-1768: setNumericConfigMap and getNumericConfigMap were added
to StandardQueryParser; ParametricRangeQueryNode and
oal.queryParser.standard.nodes.RangeQueryNode now implement
oal.queryParser.core.nodes.RangeQueryNode;
oal.queryParser.core.nodes.RangeQueryNode was deprecated and now extends
TermRangeQueryNode, which extends AbstractRangeQueryNode;
ParametricQueryNode was deprecated; FieldQueryNode now implements the
new FieldValueQueryNode<CharSequence>, which this last one implements
FieldableQueryNode and thew new ValueQueryNode
(Vinicius Barros via Uwe Schindler)

LUCENE-3326: Fixed bug if you used MoreLikeThis.like(Reader), it would
try to re-analyze the same Reader multiple times, passing different
field names to the analyzer. Additionally MoreLikeThisQuery would take
your string and encode/decode it using the default charset, it now uses
a StringReader. Finally, MoreLikeThis's methods that take File, URL, InputStream,
are deprecated, please create the Reader yourself.
(Trejkaz, Robert Muir)

LUCENE-3382: Fixed a bug where NRTCachingDirectory's listAll() would wrongly
throw NoSuchDirectoryException when all files written so far have been
cached to RAM and the directory still has not yet been created on the
filesystem.
(Robert Muir)

LUCENE-3129: Added BlockGroupingCollector, a single pass
grouping collector which is faster than the two-pass approach, and
also computes the total group count, but requires that every
document sharing the same group was indexed as a doc block
(IndexWriter.add/updateDocuments).
(Mike McCandless)

LUCENE-2955: Added NRTManager and NRTManagerReopenThread, to
simplify handling NRT reopen with multiple search threads, and to
allow an app to control which indexing changes must be visible to
which search requests.
(Mike McCandless)

LUCENE-2939: Highlighter should try and use maxDocCharsToAnalyze in
WeightedSpanTermExtractor when adding a new field to MemoryIndex as well as
when using CachingTokenStream. This can be a significant performance bug for
large documents.
(Mark Miller)

LUCENE-3044: ThaiWordFilter didn't reset its cached state correctly, this only
caused a problem if you consumed a tokenstream, then reused it, added different
attributes to it, and consumed it again.
(Robert Muir, Uwe Schindler)

LUCENE-1421: create new grouping contrib module, enabling search
results to be grouped by a single-valued indexed field. This
module was factored out of Solr's grouping implementation, but
it cannot group by function queries nor arbitrary queries.
(Mike
McCandless)

LUCENE-3092: Added NRTCachingDirectory in contrib/misc, which
caches small segments in RAM. This is useful, in the near-real-time
case where the indexing rate is lowish but the reopen rate is
highish, to take load off the IO system.
(Mike McCandless)

LUCENE-2100: All Analyzers in Lucene-contrib have been marked as final.
Analyzers should be only act as a composition of TokenStreams, users should
compose their own analyzers instead of subclassing existing ones.
(Simon Willnauer)

LUCENE-2194, LUCENE-2201: Snowball APIs were upgraded to snowball revision
502 (with some local modifications for improved performance).
Index backwards compatibility and binary backwards compatibility is
preserved, but some protected/public member variables changed type. This
does NOT affect java code/class files produced by the snowball compiler,
but technically is a backwards compatibility break.
(Robert Muir)

LUCENE-2226: Moved contrib/snowball functionality into contrib/analyzers.
Be sure to remove any old obselete lucene-snowball jar files from your
classpath!
(Robert Muir)

LUCENE-2323: Moved contrib/wikipedia functionality into contrib/analyzers.
Additionally the package was changed from org.apache.lucene.wikipedia.analysis
to org.apache.lucene.analysis.wikipedia.
(Robert Muir)

LUCENE-2581: Added new methods to FragmentsBuilder interface. These methods
are used to set pre/post tags and Encoder.
(Koji Sekiguchi)

LUCENE-2391: Improved spellchecker (re)build time/ram usage by omitting
frequencies/positions/norms for single-valued fields, modifying the default
ramBufferMBSize to match IndexWriterConfig (16MB), making index optimization
an optional boolean parameter, and modifying the incremental update logic
to work well with unoptimized spellcheck indexes. The indexDictionary() methods
were made final to ensure a hard backwards break in case you were subclassing
Spellchecker. In general, subclassing Spellchecker is not recommended.
(Robert Muir)

LUCENE-2855: contrib queryparser was using CharSequence as key in some internal
Map instances, which was leading to incorrect behavior, since some CharSequence
implementors do not override hashcode and equals methods. Now the internal Maps
are using String instead.
(Adriano Crestani)

LUCENE-2068: Fixed ReverseStringFilter which was not aware of supplementary
characters. During reverse the filter created unpaired surrogates, which
will be replaced by U+FFFD by the indexer, but not at query time. The filter
now reverses supplementary characters correctly if used with Version > 3.0.
(Simon Willnauer, Robert Muir)

LUCENE-2055: Deprecated RussianTokenizer, RussianStemmer, RussianStemFilter,
FrenchStemmer, FrenchStemFilter, DutchStemmer, and DutchStemFilter. For
these Analyzers, SnowballFilter is used instead (for Version > 3.0), as
the previous code did not always implement the Snowball algorithm correctly.
Additionally, for Version > 3.0, the Snowball stopword lists are used by
default.
(Robert Muir, Uwe Schindler, Simon Willnauer)

LUCENE-2184: Fixed bug with handling best fit value when the proper best fit value is
not an indexed field. Note, this change affects the APIs.
(Grant Ingersoll)

LUCENE-2359: Fix bug in CartesianPolyFilterBuilder related to handling of behavior around
the 180th meridian
(Grant Ingersoll)

LUCENE-2404: Fix bugs with position increment and empty tokens in ThaiWordFilter.
For matchVersion >= 3.1 the filter also no longer lowercases. ThaiAnalyzer
will use a separate LowerCaseFilter instead.
(Uwe Schindler, Robert Muir)

LUCENE-2615: Fix DirectIOLinuxDirectory to not assign bogus
permissions to newly created files, and to not silently hardwire
buffer size to 1 MB.
(Mark Miller, Robert Muir, Mike McCandless)

LUCENE-2629: Fix gennorm2 task for generating ICUFoldingFilter's .nrm file. This allows
you to customize its normalization/folding, by editing the source data files in src/data
and regenerating a new .nrm with 'ant gennorm2'.
(David Bowen via Robert Muir)

LUCENE-2653: ThaiWordFilter depends on the JRE having a Thai dictionary, which is not
always the case. If the dictionary is unavailable, the filter will now throw
UnsupportedOperationException in the constructor.
(Robert Muir)

LUCENE-2055: Integrate snowball into contrib/analyzers. SnowballAnalyzer is
now deprecated in favor of language-specific analyzers which contain things
such as stopword lists and any language-specific processing in addition to
stemming. Add Turkish and Romanian stopwords lists to support this.
(Robert Muir, Uwe Schindler, Simon Willnauer)

LUCENE-2603: Add setMultiValuedSeparator(char) method to set an arbitrary
char that is used when concatenating multiValued data. Default is a space
(' '). It is applied on ANALYZED field only.
(Koji Sekiguchi)

LUCENE-2626: FastVectorHighlighter: enable FragListBuilder and FragmentsBuilder
to be set per-field override.
(Koji Sekiguchi)

LUCENE-2712: FieldBoostMapAttribute in contrib/queryparser was changed from
a Map<CharSequence,Float> to a Map<String,Float>. Per the CharSequence javadoc,
CharSequence is inappropriate as a map key.
(Robert Muir)

LUCENE-1937: Add more methods to manipulate QueryNodeProcessorPipeline elements.
QueryNodeProcessorPipeline now implements the List interface, this is useful
if you want to extend or modify an existing pipeline.
(Adriano Crestani via Robert Muir)

LUCENE-2500: Added DirectIOLinuxDirectory, a Linux-specific
Directory impl that uses the O_DIRECT flag to bypass the buffer
cache. This is useful to prevent segment merging from evicting
pages from the buffer cache, since fadvise/madvise do not seem.
(Michael McCandless)

LUCENE-2399: Add ICUNormalizer2Filter, which normalizes tokens with ICU's
Normalizer2. This allows for efficient combinations of normalization and custom
mappings in addition to standard normalization, and normalization combined
with unicode case folding.
(Robert Muir)

LUCENE-1343: Add ICUFoldingFilter, a replacement for ASCIIFoldingFilter that
does a more thorough job of normalizing unicode text for search.
(Robert Haschart, Robert Muir)

LUCENE-2409: Add ICUTransformFilter, which transforms text in a context
sensitive way, either from ICU built-in rules (such as Traditional-Simplified),
or from rules you write yourself.
(Robert Muir)

LUCENE-2414: Add ICUTokenizer, a tailorable tokenizer that implements Unicode
Text Segmentation. This tokenizer is useful for documents or collections with
multiple languages. The default configuration includes special support for
Thai, Lao, Myanmar, and Khmer.
(Robert Muir, Uwe Schindler)

LUCENE-2298: Add analyzers/stempel, an algorithmic stemmer with support for
the Polish language.
(Andrzej Bialecki via Robert Muir)

LUCENE-2400: ShingleFilter was changed to don't output all-filler shingles and
unigrams, and uses a more performant algorithm to build grams using a linked list
of AttributeSource.cloneAttributes() instances and the new copyTo() method.
(Steven Rowe via Uwe Schindler)

LUCENE-1938: PrecedenceQueryParser is now implemented with the flexible QP framework.
This means that you can also add this functionality to your own QP pipeline by using
BooleanModifiersQueryNodeProcessor, for example instead of GroupQueryNodeProcessor.
(Adriano Crestani via Robert Muir)

LUCENE-2791: Added WindowsDirectory, a Windows-specific Directory impl
that doesn't synchronize on the file handle. This can be useful to
avoid the performance problems of SimpleFSDirectory and NIOFSDirectory.
(Robert Muir, Simon Willnauer, Uwe Schindler, Michael McCandless)

LUCENE-2124: Moved the JDK-based collation support from contrib/collation
into core, and moved the ICU-based collation support into contrib/icu.
(Steven Rowe, Robert Muir)

LUCENE-2323: Moved contrib/regex into contrib/queries. Moved the
queryparsers under contrib/misc and contrib/surround into contrib/queryparser.
Moved contrib/fast-vector-highlighter into contrib/highlighter.
Moved ChainedFilter from contrib/misc to contrib/queries. contrib/spatial now
depends on contrib/queries instead of contrib/misc.
(Robert Muir)

LUCENE-2333: Fix failures during contrib builds, when classes in
core were changed without ant clean. This fix also optimizes the
dependency management between contribs by a new ANT macro.
(Uwe Schindler, Shai Erera)

LUCENE-2157: DelimitedPayloadTokenFilter no longer copies the buffer
over itsself. Instead it sets only the length. This patch also optimizes
the logic of the filter and uses NIO for IdentityEncoder.
(Uwe Schindler)

LUCENE-2084: Change IndexableBinaryStringTools to work on byte[] and char[]
directly, instead of Byte/CharBuffers, and modify ICUCollationKeyFilter to
take advantage of this for faster performance.
(Steven Rowe, Uwe Schindler, Robert Muir)

LUCENE-2194, LUCENE-2201, LUCENE-2288: Snowball stemmers in contrib/analyzers
have been optimized to work on char[] and remove unnecessary object creation.
(Shai Erera, Robert Muir)

LUCENE-2404: Improve performance of ThaiWordFilter by using a char[]-backed
CharacterIterator (currently from javax.swing).
(Uwe Schindler, Robert Muir)

LUCENE-2055: Add documentation noting that the Dutch and French stemmers
in contrib/analyzers do not implement the Snowball algorithm correctly,
and recommend to use the equivalents in contrib/snowball if possible.
(Robert Muir, Uwe Schindler, Simon Willnauer)

LUCENE-2653: Add documentation noting that ThaiWordFilter will not work
as expected on all JRE's. For example, on an IBM JRE, it does nothing.
(Robert Muir)

LUCENE-2108: Spellchecker now safely supports concurrent modifications to
the spell-index. Threads can safely obtain term suggestions while the spell-
index is rebuild, cleared or reset. Internal IndexSearcher instances remain
open until the last thread accessing them releases the reference.
(Simon Willnauer)

LUCENE-1924: Added BalancedSegmentMergePolicy to contrib/misc,
which is a merge policy that tries to avoid doing very large
segment merges to give better search performance in a mixed
indexing/searching environment.
(John Wang via Mike McCandless)

LUCENE-1959: Add index splitting tools. The IndexSplitter tool works
on multi-segment (non optimized) indexes and it can copy specific
segments out of the index into a new index. It can also list the
segments in the index, and delete specified segments. (Jason Rutherglen via
Mike McCandless). MultiPassIndexSplitter can split any index into
any number of output parts, at the cost of doing multiple passes over
the input index.
(Andrzej Bialecki)

LUCENE-1993: Add maxDocFreq setting to MoreLikeThis, to exclude
from consideration terms that match more than the specified number
of documents.
(Christian Steinert via Mike McCandless)

LUCENE-1965, LUCENE-1962: Arabic-, Persian- and SmartChineseAnalyzer
loads default stopwords only once if accessed for the first time.
Previous versions were loading the stopword files each time a new
instance was created. This might improve performance for applications
creating lots of instances of these Analyzers.
(Simon Willnauer)

LUCENE-2002: Add required Version matchVersion argument when
constructing ComplexPhraseQueryParser and default (as of 2.9)
enablePositionIncrements to true to match StandardAnalyzer's
default. Also added required matchVersion to most of the analyzers
(Uwe Schindler, Mike McCandless)

LUCENE-1963: ArabicAnalyzer now lowercases before checking the stopword
list. This has no effect on Arabic text, but if you are using a custom
stopword list that contains some non-Arabic words, you'll need to fully
reindex.
(DM Smith via Robert Muir)

LUCENE-2014: SmartChineseAnalyzer did not properly clear attributes
in WordTokenFilter. If enablePositionIncrements is set for StopFilter,
then this could create invalid position increments, causing IndexWriter
to crash.
(Robert Muir, Uwe Schindler)

LUCENE-2013: SpanRegexQuery does not work with QueryScorer.
(Benjamin Keil via Mark Miller)

LUCENE-1505: Local lucene now uses org.apache.lucene.util.NumericUtils for all
number conversion. You'll need to fully re-index any previously created indexes.
This isn't a break in back-compatibility because local Lucene has not yet
been released.
(Mike McCandless)

LUCENE-1758: ArabicAnalyzer now uses the light10 algorithm, has a refined
default stopword list, and lowercases non-Arabic text.
You'll need to fully re-index any previously created indexes. This isn't a
break in back-compatibility because ArabicAnalyzer has not yet been
released.
(Robert Muir)

LUCENE-1695: Update the Highlighter to use the new TokenStream API. This issue breaks backwards
compatibility with some public classes. If you have implemented custom Fragmenters or Scorers,
you will need to adjust them to work with the new TokenStream API. Rather than getting passed a
Token at a time, you will be given a TokenStream to init your impl with - store the Attributes
you are interested in locally and access them on each call to the method that used to pass a new
Token. Look at the included updated impls for examples.
(Mark Miller)

LUCENE-1775, LUCENE-1903: Change remaining TokenFilters (shingle, prefix-suffix)
to use the new TokenStream API. ShingleFilter is much more efficient now,
it clones much less often and computes the tokens mostly on the fly now.
Also added more tests.
(Robert Muir, Michael Busch, Uwe Schindler, Chris Harris)

LUCENE-1685: The position aware SpanScorer has become the default scorer
for Highlighting. The SpanScorer implementation has replaced QueryScorer
and the old term highlighting QueryScorer has been renamed to
QueryTermScorer. Multi-term queries are also now expanded by default. If
you were previously rewriting the query for multi-term query highlighting,
you should no longer do that (unless you switch to using QueryTermScorer).
The SpanScorer API (now QueryScorer) has also been improved to more closely
match the API of the previous QueryScorer implementation.
(Mark Miller)

LUCENE-1793: Deprecate the custom encoding support in the Greek and Russian
Analyzers. If you need to index text in these encodings, please use Java's
character set conversion facilities (InputStreamReader, etc) during I/O,
so that Lucene can analyze this text as Unicode instead.
(Robert Muir)

LUCENE-1683: Fixed JavaUtilRegexCapabilities (an impl used by
RegexQuery) to use Matcher.matches() not Matcher.lookingAt() so
that the regexp must match the entire string, not just a prefix.
(Trejkaz via Mike McCandless)

LUCENE-1435: Added contrib/collation, a CollationKeyFilter
allowing you to convert tokens into CollationKeys encoded using
IndexableBinaryStringTools. This allows for faster RangeQuery when
a field needs to use a custom Collator.
(Steven Rowe via Mike
McCandless)

LUCENE-1745: Added constructors to JakartaRegexpCapabilities and
JavaUtilRegexCapabilities as well as static flags to support
configuring a RegexCapabilities implementation with the
implementation-specific modifier flags. Allows for callers to
customize the RegexQuery using the implementation-specific options
and fine tune how regular expressions are compiled and
matched.
(Marc Zampetti zampettim@aim.com via Mike McCandless)

LUCENE-1567: Added a new QueryParser framework, that allows
implementing a new query syntax in a flexible and efficient way.
This new QueryParser will be moved to Lucene's core in release
3.0 and will then replace the current core QueryParser, which
has been deprecated with this patch.
(Luis Alves and Adriano Campos via Michael Busch)

LUCENE-1486: Added ComplexPhraseQueryParser, an extension of QueryParser
that allows a subset of the Lucene query language to be embedded in
PhraseQuerys. Wildcard, Range, and Fuzzy queries, as well as limited
boolean logic, can be used within quote operators with this parser, ie:
"(jo* -john) smyth~".
(Mark Harwood via Mark Miller)

LUCENE-1728: Split contrib/analyzers into common and smartcn modules.
Contrib/analyzers now builds an additional lucene-smartcn Jar file. All
smartcn classes are not included in the lucene-analyzers JAR file.
(Robert Muir via Simon Willnauer)