我正在将我的代码从Lucene 3.5迁移到Lucene 4.1但是我在使用术语向量而没有索引时遇到了一些问题。
问题是,给定文本字符串和Analyzer
,我需要计算术语向量(从技术上讲,找到术语及其频率tf)。显然,它可以通过编写索引(使用IndexWriter
)然后再读回(使用IndexReader
)来实现,但我认为它会很昂贵。此外,我不需要文档频率(df)。因此,我认为无索引解决方案是合适的。
在Lucene 2和3中,一个用于上述目的的简单技术是使用QueryTermVector
扩展TermFreqVector
并使用构造函数获取字符串和分析器。遗憾的是,QueryTermVector
(以及TermFreqVector
)已在Lucene 4中删除,似乎迁移文档未提及有关QueryTermVector
的任何内容。
Lucene 4中是否有解决此问题的方法?非常感谢你。
答案 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
}