4

ドキュメント内の用語の数を数えることで 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 に答える