我可以通过计算文档中的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());
}
答案 0 :(得分:6)
在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)是一回事。