0

Lucene のチュートリアル ( http://www.lucenetutorial.com/lucene-in-5-minutes.html ) では、

public class HelloLucene {
public static void main(String[] args) throws IOException, ParseException {
IndexWriter w = new IndexWriter(index, config);
         addDoc(w, "Lucene lucene in Action");
         addDoc(w, "Lucene for Dummies");
         addDoc(w, "Managing Gigabytes");
         addDoc(w, "The Art of Computer Science");
         w.close();
String querystr = args.length > 0 ? args[0] : "lucene";
//...
 }
}

上記のように文字列を「Lucene lucene in Action」に変更し、ドキュメントでキーワード「lucene」を検索すると、文字列「Lucene lucene in Action」のヒット数 1 が見つかります。関数に文字列 (例: "asd asd fds asd") を送信し、"asd" を検索して結果を見つけたい 3. クエリ addDoc(w, "asd asd fds asd"); ???

選択した行のヒット数は表示されません。ヒットした場合は 1、ヒットしなかった場合は 0 を書き込みます。

4

2 に答える 2

1

あなたが探しているのは、項ベクトル頻度の計算だと思います。

それらに関するこの質問を参照してください-一連のドキュメントの用語頻度をカウントする方法は?

そしてこれ-Luceneインデックスから最も頻度の高い用語を取得する

私が質問を理解している場合、あなたは入力フレーズ(例えば'asd')があなたのインデックスのドキュメント内で発生する回数を数える方法を尋ねています。その場合、用語ベクトル頻度を計算し、検索クエリを比較して、一致するものとそれに対応する出現回数があるかどうかを判断する必要があります。これは単語全体の照合に役立ち、索引付けされたドキュメントのコーパス内の用語の全文近接検索に使用されるようには設計されていないことに注意してください。

于 2012-10-15T19:37:48.287 に答える
1

あなたの例で何かを誤解している可能性があると思います。

この例では、一致するドキュメント内の一致する用語の数を収集しているものは何もありません。おそらく、著者が使用している「ヒット」という言葉は、物事をやや混乱させているのかもしれません。

そこhitsにある変数は、一致するドキュメント ID とスコアをScoreDocのコレクションに格納します。ドキュメントの一致の強さを判断するには、これを確認するのhits[index].scoreが最も適切です。

于 2012-10-15T19:48:56.850 に答える