计算术语向量而不在lucene中进行索引4

时间:2013-02-27 09:12:42

标签: lucene indexing

我正在将我的代码从Lucene 3.5迁移到Lucene 4.1但是我在使用术语向量而没有索引时遇到了一些问题。

问题是,给定文本字符串和Analyzer,我需要计算术语向量(从技术上讲,找到术语及其频率tf)。显然,它可以通过编写索引(使用IndexWriter)然后再读回(使用IndexReader)来实现,但我认为它会很昂贵。此外,我不需要文档频率(df)。因此,我认为无索引解决方案是合适的。

在Lucene 2和3中,一个用于上述目的的简单技术是使用QueryTermVector扩展TermFreqVector并使用构造函数获取字符串和分析器。遗憾的是,QueryTermVector(以及TermFreqVector)已在Lucene 4中删除,似乎迁移文档未提及有关QueryTermVector的任何内容。

Lucene 4中是否有解决此问题的方法?非常感谢你。

1 个答案:

答案 0 :(得分:0)

如果您只需要知道术语/频率,您可以直接从分析仪获取单个令牌(您可以通过计算它们来获取TF,例如使用Map或Multiset)。

这是你在Lucene 4.0中的表现:

TokenStream ts = analyzer.tokenStream(field, new StringReader(text));
CharTermAttribute charTermAttribute = ts.addAttribute(CharTermAttribute.class);


while (ts.incrementToken()) {
    String term = charTermAttribute.toString();
    //term contains your token
}