Had*_*har 4 java solr nlp tf-idf
我可以通过计算文档中的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());
}
Run Code Online (Sandbox Code Playgroud)
在SOLR中,您可以使用函数查询直接查询docFreq,如下所示:http://wiki.apache.org/solr/FunctionQuery#docfreq ,
q={!func}docFreq(tweet_text, kw)
Run Code Online (Sandbox Code Playgroud)
注意,该页面上还记录了获取tf,idf和termfreq的函数查询方法,这些方法也可能对您有所帮助.
回想起来,这可能与这个问题的相关性不大,但我会暂时搁置,以防它对你有用.
IndexReader.docFreq(Term)可以帮助您获得所需内容.
如:
reader.docFreq(new Term("tweet_text", kw));'
Run Code Online (Sandbox Code Playgroud)
顺便说一句,IndexSearcher.docFreq(Term)是一回事.