【问题标题】:compute term vector without indexing in lucene 4在 lucene 4 中计算没有索引的术语向量
【发布时间】:2013-02-13 00:39:02
【问题描述】:

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

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

在 Lucene 2 和 3 中,实现上述目的的一种简单技术是使用 QueryTermVector,它扩展了 TermFreqVector,并有一个带有字符串和分析器的构造函数。不幸的是,QueryTermVector(连同TermFreqVector)已在 Lucene 4 中被删除,而且迁移文档似乎没有提到任何关于 QueryTermVector 的内容。

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

【问题讨论】:

    标签: lucene indexing


    【解决方案1】:

    如果您只需要知道术语/频率,您可以直接从分析器中获取单个标记(您可以通过对它们进行计数来获取 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
    }
    

    【讨论】:

    • 这正是我所做的。只希望 Lucene 4 提供QueryTermVector 的替代方案。我猜不是:(
    猜你喜欢
    • 2022-06-11
    • 2015-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多