4

我可以通过计算文档中的 Term 数轻松获得 TF,我想知道如何计算文档频率,即包含该术语的文档数

到目前为止,我已经达到的是使用大量行查询 solr 并计算结果,但这非常耗费时间和内存。我只想计算条款

    SolrQuery q = new SolrQuery();
    q.setQuery("tweet_text:"+kw);
    q.addField("tweet_text");
    q.setRows(40000000);        
    SolrDocumentList results = null ;

    try {
        QueryResponse rsp = solrServer.query(q);
        results = rsp.getResults();
    } catch (SolrServerException e) {
        e.printStackTrace();
    }

    ArrayList<String> tweets = new ArrayList<String>();
    for (SolrDocument doc : results)
    {
        tweets.add(doc.getFieldValue("tweet_text").toString());
    }
4

1 回答 1

7

在 SOLR 中,您可以使用函数查询直接查询 docFreq,如下所示:http ://wiki.apache.org/solr/FunctionQuery#docfreq ,

q={!func}docFreq(tweet_text, kw)

请注意,该页面上还记录了获取 tf、idf 和 termfreq 的函数查询方法,这也可能对您有所帮助。


回想起来,这可能与这个问题不太相关,但我会暂时留下它,以防它对你有用。

IndexReader.docFreq(Term)可以为您提供所需的内容。

如:

reader.docFreq(new Term("tweet_text", kw));'

顺便说一下,IndexSearcher.docFreq(Term) 是一回事。

于 2012-11-20T16:42:27.623 回答