現在、Luceneを使用して説明フィールドに各単語の猶予を取得しようとしています。 F.e.Luceneのターム数のフィルタリング(Java)
- 説明:APPLES の箱
- 説明:BOXバナナ
出力:
- BOX 2
- のAPPLES 1
- バナナ1
私は言葉と頻度を得るために探しています。
これらの結果を特定のドキュメントにフィルタリングしたいのですが、特定のドキュメントの説明フィールドにある単語のみをカウントすることを意味します。
ありがとうございます。コメントする答えで
//: 私はこのようなものがあります:
public ArrayList<ObjectA> GetIndexTerms(String code) {
try {
ArrayList<Object> termlist = new ArrayList<ObjectA>();
indexR = IndexReader.open(path);
TermEnum terms = indexR.terms();
while (terms.next()) {
Term term = terms.term();
String termText = term.text();
int frequency = indexR.docFreq(term);
ObjectA newObj = new ObjectA(termText, frequency);
termlist.add(newObj);
}
}
return termlist;
} catch (Exception ex) {
ex.printStackTrace();
return null;
}
}
をしかし、私は文書でそれをフィルタリングする方法を見ていない...
// TODAY !
termfreqvecを使用すると動作させることができますが、ドキュメントIDが必要なため、正しく使用することはできません。私がクエリを使用して以来、 "i"の値は0から始まり、適切なドキュメントIDではありません。これを正しく動作させるためのアイデアはありますか? ありがとう!
TopDocs tp = indexS.search(query, Integer.MAX_VALUE);
for (int i = 0; i < tp.scoreDocs.length; i++){
ScoreDoc sds = tp.scoreDocs[i];
Document doc = indexS.doc(sds.doc);
TermFreqVector tfv = indexR.getTermFreqVector(i,"description");
for (int j = 0; j < tfv.getTerms().length; j++) {
String item = tfv.getTerms()[j];
termlist.add(new TerminoDescripcion(item.toUpperCase(), tfv.getTermFrequencies()[j]));
}
}
私は自分の投稿を編集し、あなたが私に言ったことに関するいくつかのコードを追加しました。私は右の文書IDを得るように見えることはできません。 – TheMadCapLaughs27
あなたはgetTermFreqVectorの – jpountz
コールでiをsds.docに置き換える必要があります。それはうまく動作しました(= – TheMadCapLaughs27