【发布时间】:2020-10-07 21:30:51
【问题描述】:
我正在尝试从 Lucene 的文档字段中获取所有名为 Terms 的术语和相关帖子(即如何计算 Lucene 中的术语频率?)。根据documentation,有一种方法可以做到这一点:
public final Terms getTermVector(int docID, String field) throws IOException
检索此文档和字段的词向量,如果词向量没有被索引,则返回 null。返回的 Fields 实例就像一个单文档倒排索引(docID 将为 0)。
有一个名为int docID 的字段。这是什么??对于给定的文档,它的 id 字段是什么,Lucene 如何识别它?
根据 Lucene 的文档,我使用 StringField 作为 id,它不是 int。
import org.apache.lucene.document.*;
Document doc = new Document();
Field idField = new StringField("id",post.Id,Field.Store.YES);
Field bodyField = new TextField("body", post.Body, Field.Store.YES);
doc.add(idField);
doc.add(bodyField);
我有五个问题:
- Lucene 如何识别
id字段用作此文档的docId?甚至 Lucene 是否这样做?? - 我使用
String作为id,但是这个方法给出了int。它会导致问题吗? - 有没有合适的方法来获取帖子?
- 我用过
TextField。有没有办法检索该字段的术语向量(Terms)?我不想按照 here 的说明重新索引我的文档,因为它太大 (35-GB)。 - 有没有什么方法可以从
TextField获取术语计数和每个术语频率?
【问题讨论】: