【lucene】PostingsEnum.freq()

在 Lucene 中,`PostingsEnum.freq()` 返回的正是当前文档内该 term 出现的次数,也就是词频(term frequency, tf)。

简单梳理一下流程:

1. 你通过 `TermsEnum.postings()` 或 `MultiTerms.getTermState()` 之类的方法拿到某个 term 的倒排表迭代器 `PostingsEnum`。

2. 然后调用 `PostingsEnum.nextDoc()` 遍历包含该 term 的所有文档。

3. 每定位到一个文档(docID),调用 `PostingsEnum.freq()` 就能拿到这个 term 在这个文档中的出现次数。

举个例子:

```java

PostingsEnum postings = termsEnum.postings(null, PostingsEnum.FREQS);

while (postings.nextDoc() != DocIdSetIterator.NO_MORE_DOCS) {

    int docID = postings.docID();

    int freq = postings.freq(); // 当前文档中该 term 的词频

    System.out.println("docID: " + docID + ", freq: " + freq);

}

```

 

所以,`PostingsEnum.freq()` 就是针对当前 term 在指定文档中的词频,不是整个索引,也不是所有文档,也不是所有 term。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值