【发布时间】:2010-10-14 14:54:52
【问题描述】:
有没有一种快速简便的方法可以从 Lucene 索引中获取词频,而无需通过 TermVectorFrequencies 类来完成,因为对于大型集合来说这需要大量时间?
我的意思是,有没有像 TermEnum 这样的东西,它不仅有文档频率,还有词频?
更新: 使用 TermDocs 太慢了。
【问题讨论】:
标签: java full-text-search lucene
有没有一种快速简便的方法可以从 Lucene 索引中获取词频,而无需通过 TermVectorFrequencies 类来完成,因为对于大型集合来说这需要大量时间?
我的意思是,有没有像 TermEnum 这样的东西,它不仅有文档频率,还有词频?
更新: 使用 TermDocs 太慢了。
【问题讨论】:
标签: java full-text-search lucene
使用TermDocs 获取给定文档的词频。与文档频率一样,您可以使用感兴趣的术语从IndexReader 获取术语文档。
您不会找到比TermDocs 更快的方法而不失一般性。 TermDocs 直接从索引段中的“.frq”文件读取,其中每个词频按文档顺序列出。
如果这“太慢”,请确保您已优化索引以将多个段合并为一个段。按顺序遍历文档(跳过没问题,但不能高效地在文档列表中来回跳转)。
您的下一步可能是进行额外处理,以创建一个更专业的文件结构,从而省略SkipData。就我个人而言,我会寻找一种更好的算法来实现我的目标,或者提供更好的硬件——大量内存,或者保存RAMDirectory,或者提供给操作系统以在其自己的文件缓存系统上使用。
【讨论】:
Lucene 的主干版本(最终将是 4.0)现在公开了来自 TermsEnum 的每个术语的 totalTermFreq()。这是该词在所有内容中出现的总次数(但与 docFreq 一样,不考虑删除)。
【讨论】:
TermDocs 给出包含该术语的每个文档中给定术语的 TF。您可以通过遍历每个
【讨论】: