首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从Lucene 2到Lucene 4

从Lucene 2到Lucene 4
EN

Stack Overflow用户
提问于 2013-01-16 16:48:10
回答 1查看 1.1K关注 0票数 0

我正在将我的Java应用程序从Lucene 2迁移到Lucene 4,但是我找不到任何好的方法来转换代码。我还试图访问http://lucene.apache.org/core/4_0_0-ALPHA/MIGRATE.html,但其中的示例代码根本不起作用(例如,reader.termDocsEnum方法不适用于IndexReaderDirectoryReader,但仅适用于我从未听说过的AtomicReader )。

给定一个名为indexReaderIndexReader,旧代码是:

代码语言:javascript
运行
复制
Term find = new Term("field", "value");
TermDocs td = indexReader.termDocs(find);
while (termDocs.next()) {
    Document d = termDocs.doc();
    // do stuff
}

如何转换这些代码?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-16 17:28:39

以下内容应与您的案例相关:

文档/职位枚举不能查找术语。相反,TermsEnum能够查找,然后您从该TermsEnum请求文档/位置枚举。

我猜你需要这个:

代码语言:javascript
运行
复制
TermsEnum termsEnum = atomicReader.terms("fieldName").iterator();
BytesRef text = new BytesRef("searchTerm");
if (termsEnum.seekExact(text, true)) {
  ...
}

低级API现在显然是面向原子(非复合)阅读器的,因为这是获得最佳性能的唯一途径。您可能会将从Directory获取的复合阅读器包装在一个SlowCompositeReaderWrapper中,但是,正如类名已经警告的那样,它将是slow

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14354331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档