1

我正在将我的代码从 Lucene 3.5 迁移到 Lucene 4.1,但是在没有索引的情况下获取术语向量时遇到了一些问题。

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

在 Lucene 2 和 3 中,用于上述目的的一种简单技术是使用QueryTermVectorwhich extendsTermFreqVector并具有一个构造函数,该构造函数带有一个字符串和一个 Analyzer。不幸的是,QueryTermVector(连同TermFreqVector)已在 Lucene 4 中被删除,而且迁移文档似乎没有提到任何关于QueryTermVector.

您在 Lucene 4 中有解决此问题的方法吗?非常感谢。

4

1 回答 1

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
}
于 2013-03-04T17:31:37.773 回答