由于项目需求,需要将Lucene4.6升级到Lucene6.6,因此我对这之间的所有重要的API改动做了搜集;特别重要的改变加粗显示。

Lucene4.7改动:

LUCENE-5405: Make ShingleAnalzyerWrapper.getWrappedAnalyzer() public final
(gsingers)

LUCENE-5395: The
SpatialArgsParser now only reads WKT, no more "lat, lon" etc. but
it's easy to override the parseShape method if you wish.

Lucene4.8改动:

  • LUCENE-5516: MergeScheduler#merge()
    now accepts a MergeTrigger as well as a boolean that indicates if a new merge
    was found in the caller thread before the scheduler was called.
    (Simon Willnauer)
  • LUCENE-5487: Separated bulk scorer (new Weight.bulkScorer method)
    from normal scoring (Weight.scorer) for those queries that can do bulk scoring
    more efficiently, e.g. BooleanQuery in some cases. This also simplified the
    Weight.scorer API by removing the two confusing booleans.

Lucene4.9改动:

  • ·LUCENE-5725:
    MoreLikeThis#like now accepts multiple values per field. The pre-existing
    method has been deprecated in favor of a variable arguments for the like text.
    (Alex Ksikes via Simon Willnauer)
  • ·LUCENE-5711: MergePolicy
    accepts an IndexWriter instance on each method rather than holding state
    against a single IndexWriter instance.
  • ·LUCENE-5640:
    The Token class was deprecated. Since Lucene 2.9, TokenStreams are using
    Attributes, Token is no longer used.
    (Uwe Schindler, Robert Muir)
  • ·LUCENE-5678:
    IndexOutput no longer allows seeking, so it is no longer required to use
    RandomAccessFile to write Indexes. Lucene now uses standard FileOutputStream
    wrapped with OutputStreamIndexOutput to write index data. BufferedIndexOutput
    was removed, because buffering and checksumming is provided by
    FilterOutputStreams, provided by the JDK.

Lucene5.0改动:

LUCENE-4924: DocIdSetIterator.docID() must now return -1 when the iterator is not
positioned. This change affects all classes that inherit from DocIdSetIterator,
including DocsEnum and DocsAndPositionsEnum.
(Adrien Grand)

LUCENE-5388: Remove Reader from
Tokenizer's constructor and from Analyzer's createComponents. TokenStreams now
always get their input via setReader.
(Benson Margulies via Robert Muir - pull request #16)

LUCENE-5527: The Collector API has been refactored to use a
dedicated
(专用的) Collector per leaf.
(Shikhar Bhushan, Adrien Grand)

LUCENE-5702: The FieldComparator API has been refactor to a
per-leaf API, just like Collectors.
(Adrien Grand)

LUCENE-4246: IndexWriter.close now always closes, even if it
throws an exception. The new IndexWriterConfig.setCommitOnClose (default true)
determines whether close() should commit before closing.

LUCENE-5569: *AtomicReader/AtomicReaderContext have been renamed to *LeafReader/LeafReaderContext.

LUCENE-6021:FixedBitSet.nextSetBit
now returns DocIdSetIterator.NO_MORE_DOCS instead of -1 when there are no more
bits which are set.
(Adrien Grand)

LUCENE-6084: IndexOutput's
constructor now requires a String resourceDescription so its toString is sane
(Robert Muir, Mike McCandless)

LUCENE-6121:
CachingTokenFilter.reset() now propagates to its input if called before
incrementToken(). You must call reset() now on this filter instead of doing it
a-priori on the input(), which previously didn't work.
(David Smiley, Robert Muir)

LUCENE-6165: IndexWriter.addIndexes(IndexReader...) changed to
addIndexes(CodecReader...)
(Robert Muir)

Lucene5.1改动:

LUCENE-6218, LUCENE-6220: Add
Collector.needsScores() and needsScores parameter to Query.createWeight().
(Robert Muir, Adrien Grand)

LUCENE-4524, LUCENE-6246, LUCENE-6256, LUCENE-6271:

Merge
DocsEnum and DocsAndPositionsEnum into a single PostingsEnum iterator.
TermsEnum.docs() and TermsEnum.docsAndPositions() are replaced by
TermsEnum.postings().

LUCENE-6270:
Replaced TermsFilter with TermsQuery, use a QueryWrapperFilter(TermsQuery)
instead.
(Adrien Grand)

LUCENE-6272: Scorer
extends DocSetIdIterator rather than DocsEnum

(Alan Woodward)

LUCENE-6286: Removed IndexSearcher methods that take a
Filter object. A BooleanQuery with a filter clause must be used instead.

(Adrien Grand)

LUCENE-6300:
PrefixFilter, TermRangeFilter and NumericRangeFilter have been removed. Use
PrefixQuery, TermRangeQuery and NumericRangeQuery instead.
(Adrien Grand)

LUCENE-6303:
Replaced FilterCache with QueryCache and CachingWrapperFilter with
CachingWrapperQuery.
(Adrien Grand)

Lucene5.2改动:

  • LUCENE-6377:
    SearcherFactory#newSearcher now accepts the previous reader to simplify warming
    logic during opening new searchers.
    (Simon Willnauer)
  • LUCENE-6410:
    Removed unused "reuse" parameter to Terms.iterator.
    (Robert Muir, Mike McCandless)

Lucene5.3改动:

  • LUCENE-6552:
    Add MergePolicy.OneMerge.getMergeInfo and rename setInfo to setMergeInfo
    (Simon Willnauer, Mike McCandless)
  • LUCENE-6583:
    FilteredQuery is deprecated and will be removed in 6.0. It should be replaced
    with a BooleanQuery which handle the
    query as a MUST clause and the filter as a FILTER clause.

    (Adrien Grand)
  • LUCENE-6553: The postings, spans and scorer APIs no
    longer take an acceptDocs parameter. Live docs are now always checked on top of
    these APIs.
    (Adrien Grand)
  • LUCENE-6643:
    GroupingSearch from lucene/grouping was changed to take a Query object to
    define groups instead of a Filter.
    (Adrien Grand)
  • LUCENE-6648:
    All lucene/facet APIs now take Query
    objects where they used to take Filter objects.
    (Adrien Grand)
  • LUCENE-6531:
    PhraseQuery is now immutable and can be built using the PhraseQuery.Builder
    class.
    (Adrien Grand)
  • LUCENE-6570:
    BooleanQuery is now immutable and can be
    built using the BooleanQuery.Builder class.

    (Adrien Grand)

Lucene5.4改动:

  • LUCENE-6855:
    CachingWrapperQuery is deprecated and will be removed in 6.0.
    (Adrien Grand)
  • LUCENE-6849:
    Expose IndexWriter.flush() method, to move all in-memory segments to disk
    without opening a near-real-time reader nor calling fsync
    (Robert Muir, Simon Willnauer, Mike McCandless)

Lucene5.5改动:

  • LUCENE-6919:
    The Scorer class has been refactored to
    expose an iterator instead of extending DocIdSetIterator. asTwoPhaseIterator()
    has been renamed to twoPhaseIterator() for consistency.
    (Adrien Grand)
  • LUCENE-6980:
    Default applyAllDeletes to true when opening near-real-time readers
    (Mike McCandless)
  • LUCENE-6932:
    IndexInput.seek implementations now throw EOFException if you seek beyond the
    end of the file
    (Adrien Grand, Mike McCandless)
  • LUCENE-6988:
    IndexableField.tokenStream() no longer throws IOException
    (Alan Woodward)

Lucene6.0改动:

LUCENE-6583:
FilteredQuery has been removed. Instead, you can construct a BooleanQuery with
one MUST clause for the query, and one FILTER clause for the filter.
(Adrien Grand)

LUCENE-6706:
PayloadTermQuery and PayloadNearQuery have been removed. Instead, use
PayloadScoreQuery to wrap any SpanQuery.
(Alan Woodward)

LUCENE-6947:
SortField.missingValue is now protected. You can read its value using the new
SortField.getMissingValue getter.
(Adrien Grand)

LUCENE-7052, LUCENE-7053: Remove
custom comparators from BytesRef class and solely use natural byte[] comparator
throughout codebase. This also simplifies API of BytesRefHash. It also replaces
the natural comparator in ArrayUtil by Java 8's Comparator#naturalOrder().
(Mike McCandless, Uwe Schindler, Robert Muir)

LUCENE-7058: Add
getters to various Query implementations
(Guillaume Smet via Alan
Woodward)

LUCENE-7064:
MultiPhraseQuery is now immutable and should be constructed with
MultiPhraseQuery.Builder.
(Luc Vanlerberghe via Adrien Grand)

LUCENE-6952: These
classes are now abstract: FilterCodecReader, FilterLeafReader, FilterCollector,
FilterDirectory. And some Filter* classes in lucene-test-framework too.
(David Smiley)

SOLR-8867:
FunctionValues.getRangeScorer now takes a LeafReaderContext instead of an
IndexReader, and avoids matching documents without a value in the field for
numeric fields.
(yonik)

Lucene6.1改动:

LUCENE-7243:Removed
the LeafReaderContext parameter from QueryCachingPolicy#shouldCache.
(Adrien Grand)

Lucene6.2改动:

ScoringWrapperSpans was removed since it
had no purpose or effect as of Lucene 5.5.

Lucene6.3改动:

修复了一些BUG无API改动!

Lucene6.4改动:

修复了一些BUG无API改动!

Lucene6.5改动:

  • ·  LUCENE-7624:
    TermsQuery has been renamed as TermInSetQuery and moved to core.

    (Alan Woodward)
  • LUCENE-7637:
    TermInSetQuery requires that all terms come from the same field.
    (Adrien Grand)
  • LUCENE-7644:
    FieldComparatorSource.newComparator() and SortField.getComparator() no longer
    throw IOException
    (Alan Woodward)
  • LUCENE-7628:
    Scorer.getChildren() now only returns Scorers that are positioned on the
    current document, and can throw an IOException. AssertingScorer checks that
    getChildren() is not called on an unpositioned Scorer.
    (Alan Woodward, Adrien Grand)
  • LUCENE-7707:
    TopDocs.merge now takes a boolean option telling it when to use the incoming
    shard index versus when to assign the shard index itself, allowing users to
    merge shard responses incrementally instead of once all shard responses are
    present.
    (Simon Willnauer, Mike McCandless)

Lucene6.6改动:

修复了一些BUG无API改动!

Lucene4.6至 Lucene6.6的每个迭代对API的改动的更多相关文章

  1. 打造属于自己的支持版本迭代的Asp.Net Web Api Route

    在目前的主流架构中,我们越来越多的看到web Api的存在,小巧,灵活,基于Http协议,使它在越来越多的微服务项目或者移动项目充当很好的service endpoint. 问题 以Asp.Net W ...

  2. 细说java中Map的两种迭代方式

    曾经对java中迭代方式总是迷迷糊糊的,今天总算弄懂了.特意的总结了一下.基本是算是理解透彻了. 1.再说Map之前先说下Iterator: Iterator主要用于遍历(即迭代訪问)Collecti ...

  3. Android 中的mvvm

    我们来了解一下MVVM模式与Databinding ,MVVM是一种模式,Databinding 是一种框架.DataBinding是一个实现数据和UI绑定的框架.而ViewModel和View可以通 ...

  4. iOS组件化思路 <转>

    随着应用需求逐步迭代,应用的代码体积将会越来越大,为了更好的管理应用工程,我们开始借助CocoaPods版本管理工具对原有应用工程进行拆分.但是仅仅完成代码拆分还不足以解决业务之间的代码耦合,为了更好 ...

  5. python基础之面向对象高级编程

    面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个"函数"供使用(可以讲多函数中公用的变量封装到对象中) ...

  6. Python学习笔记 for windows 三

    多重继承 继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能. 哺乳类:能跑的哺乳类,能飞的哺乳类: 鸟类:能跑的鸟类,能飞的鸟类. class Animal(object): ...

  7. python基础——定制类

    python基础——定制类 看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方 ...

  8. python 定制类

    看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__len__()方法我们也知道是为了能让cla ...

  9. Python3 面向对象 高级编程

    正常情况下,当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性.  class Student(object): pass 然后,尝试 ...

随机推荐

  1. Python3 Tkinter-Toplevel

    1.创建 Toplevel与Frame类似,但是它包含窗体属性(如Title) from tkinter import * root=Tk() tl=Toplevel() Label(tl,text= ...

  2. Greedy Gift Givers 贪婪的送礼者

    Description 对于一群要互送礼物的朋友,TRW要确定每个人送出的钱比收到的多多少.在这一个问题中,每个人都准备了一些钱来送礼物,而这些钱将会被平均分给那些将收到他的礼物的人.然而,在任何一群 ...

  3. lintcode-184-最大数

    184-最大数 给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数. 注意事项 最后的结果可能很大,所以我们返回一个字符串来代替这个整数. #### 样例 给出 [1, 20, 23, 4, ...

  4. Linux中实现在系统启动时自动加载模块

    下面是以前学习Linux时写的,后来仔细研究rc.sysinit后发现,只需要修改下列地方就可以了,不必这么麻烦的: rc.sysinit中有这样的一段代码: # Load other user-de ...

  5. bzoj3676-回文串

    给出一个字符串,一个子串的出现值为字串出现次数乘以长度,求所有回文串中最大的出现值. 分析 回文自动机模版题,建出自动机后直接统计即可. 回文自动机 类似于后缀自动机,不过一条边\((u,v,c)\) ...

  6. 【bzoj4842】[Neerc2016]Delight for a Cat 线性规划与网络流

    题目描述 $n$ 个连续的位置,每个位置可以填入 S 和 E ,第 $i$ 个位置填入 S 可以获得 $s_i$ 的收益,填入 E 可以获得 $e_i$ 的收益.要求每连续的 $k$ 个位置必须包含至 ...

  7. hdu 1150 Machine Schedule (二分匹配)

    Machine Schedule Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  8. 【BZOJ5297】【CQOI2018】社交网络(矩阵树定理)

    [BZOJ5297][CQOI2018]社交网络(矩阵树定理) 题面 BZOJ 洛谷 Description 当今社会,在社交网络上看朋友的消息已经成为许多人生活的一部分.通常,一个用户在社交网络上发 ...

  9. POJ1273:Drainage Ditches——题解

    http://poj.org/problem?id=1273 题目大意: n点m边网络流,求1-n最大流. —————————————— 网络流板子,切了. #include <cstdio&g ...

  10. Codevs1169:传纸条——题解

    题目描述 Description 小渊和小轩是好朋友也是同班同学,他们在一起总有谈不完的话题.一次素质拓展活动中,班上同学安排做成一个m行n列的矩阵,而小渊和小轩被安排在矩阵对角线的两端,因此,他们就 ...