作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我看过how to get a list of all tokens from Solr/Lucene index?但 Lucene 8.6.1 似乎不提供 IndexReader.terms()
.它被移动或更换了吗?有没有比 this answer 更简单的方法?
最佳答案
一些历史
你问:我只是想知道是否IndexReader.terms()
已移动或被替代品取代。
Lucene v3 方法 IndexReader.terms()
已移至 AtomicReader
在 Lucene v4 中。这记录在 v4 alpha release notes 中.
(请记住,Lucene v4 早在 2012 年就发布了。)AtomicReader
中的方法在 v4 中需要一个 field name .
正如 v4 发行说明所述:
One big difference is that field and terms are now enumerated separately: a TermsEnum provides a BytesRef (wraps a byte[]) per term within a single field, not a Term.
AtomicReader
和
AtomicReaderContext
类被重命名为
LeafReader
和
LeafReaderContext
在 Lucene v 5.0.0 中。见
Lucene-5569 .
private void getTokensForField(IndexReader reader, String fieldName) throws IOException {
List<LeafReaderContext> list = reader.leaves();
for (LeafReaderContext lrc : list) {
Terms terms = lrc.reader().terms(fieldName);
if (terms != null) {
TermsEnum termsEnum = terms.iterator();
BytesRef term;
while ((term = termsEnum.next()) != null) {
System.out.println(term.utf8ToString());
}
}
}
}
上面的例子假设一个索引如下:
private static final String INDEX_PATH = "/path/to/index/directory";
...
IndexReader reader = DirectoryReader.open(FSDirectory.open(Paths.get(INDEX_PATH)));
如果需要枚举字段名,代码在
this question可以提供一个起点。
关于java - 如何从 Lucene 8.6.1 索引中获取所有 token 的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64921086/
我是一名优秀的程序员,十分优秀!