- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用新发布的 Lucene 4,并且我了解到与文档术语向量相关的 API 发生了很大变化。我已经通读了迁移文档和相关的各种博客邮件列表帖子,并且我相信我正确使用了 API。但是,我总是从 IndexReader.getTermVector() 返回空的术语引用。这就是我正在做的事情:
// Indexing, given "bodyString" as a String containing document text
Document doc = new Document();
doc.add(new TextField("body", bodyString, Field.Store.YES));
MyIndexWriter.addDocument(doc);
// much later, enumerating document term vectors for "body" field for every doc
for (int i = 0; i < Reader.maxDoc(); ++i) {
final Terms terms = Reader.getTermVector(i, "body");
if (terms != null) {
int numTerms = 0;
// record term occurrences for corpus terms above threshold
term = terms.iterator(term);
while (term.next() != null) {
++numTerms;
}
System.out.println("Document " + i + " had " + numTerms + " terms");
}
else {
System.err.println("Document " + i + " had a null terms vector for body");
}
}
当然,它打印出我的每个文档都有空术语向量,即 Reader.getTermVector(i, "body") 始终返回 null。
当我查看 Luke 中的索引时,我有存储了正文字段的文档。但是,当我单击“TV”按钮(在“文档”选项卡中)并突出显示正文字段时,卢克告诉我“术语向量不可用”。我是否需要添加其他类型的选项来在索引时记录此信息?
有什么想法吗?谢谢!
乔恩
更新我应该注意到,所讨论的 IndexReader 是 SlowCompositeReaderWrapper 的一个实例,它包装了一个 DirectoryReader。我使用 SlowCompositeReaderWrapper
因为我也想要语料库术语频率,并且不清楚如何迭代所有 IndexReader
叶子上的所有文档(文档 ID 是否会在各个叶子之间重复使用)他们?等等)。
SlowCompositeReaderWrapper 是罪魁祸首吗?
最佳答案
根据TextField API它是“一个被索引和标记化的字段,没有术语向量。”如果您想存储 TermVector,则应该使用 Field ,并将其设置为将 TermVector 存储在 FieldType 中.
类似于:
Document doc = new Document();
FieldType type = new FieldType();
type.setIndexed(true);
type.setStored(true);
type.setStoreTermVectors(true);
Field field = new Field("body", bodyString, type);
doc.add(field);
MyIndexWriter.addDocument(doc);
关于lucene - 在 lucene 4 中,IndexReader.getTermVector(docID, fieldName) 为每个文档返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14363377/
我正在尝试从 Lucene 的文档字段中获取所有名为 Terms 的术语和相关帖子(即如何计算 Lucene 中的术语频率?)。根据documentation有一种方法可以做到这一点: 公共(publ
嗨 如果lucene索引上只发生插入操作(没有删除/更新),那么docID是否真的没有改变?而且它也可靠 如果这是真的,我想用它来增量加载 FieldCache 以降低加载所有文档的开销,最好的解决方
我正在索引 Lucene.Net 数据库中的一行数据。一行相当于文档。 我想用 DocId 更新我的数据库,以便我可以在结果中使用 DocId 以便能够快速检索行。 我目前首先从结果文档中检索 PK,
我有一个简单的查询,可以在帖子相关帖子下推荐用户。 await this.$fireStore.collection('posts') .limit(6).where('tags', 'array-c
请找到我的代码片段。 @RequestMapping(value="/abc" , Method=RequetMethod.GET) public void xxx(@Requestparam
我想知道如何限制一组文档中的查询搜索。到目前为止,我能够将搜索中的文档列表输出到数组(或文本文件)。我想搜索其他术语,但限制此文档列表中的结果。 考虑到我是一个java新手,请在你的回答中进行描述。我
我有这样一段文字: .I 1 .T experimental investigation of the aerodynamics of a wing in a slipstream . .A bren
我正在将 dtSearch 与 SQL 数据库结合使用,并希望维护一个包含所有 DocId 及其相关文件名的表。从那里,我将添加一个包含我的外键的列,以允许我结合文本和数据库搜索。 我有代码可以简单地
我有一个 Lotus 脚本,可以将组织 docID 添加到 contactDoc 并且它工作正常,但我想在 java 脚本中实现此目的 Sub AddContactID(contact As Note
我正在使用新发布的 Lucene 4,并且我了解到与文档术语向量相关的 API 发生了很大变化。我已经通读了迁移文档和相关的各种博客邮件列表帖子,并且我相信我正确使用了 API。但是,我总是从 Ind
我是一名优秀的程序员,十分优秀!