5

この "t1 t2 t3" (t1、t2、t3 をキューに入れる必要があります) のようなクエリを逆インデックス構造で検索したい場合、どのようにすればよいでしょうか?

1-最初に "t1" 用語を検索し、 "t1" を含むすべてのドキュメントを見つけ、次に "t2" と "t3" に対してこの作業を行います。次に、「t1」、「t2」、「t3」の位置が隣り合っている文書を見つけます。

2-最初に「t1」用語を検索し、「t1」を含むすべてのドキュメントを見つけます。次に、見つかったすべてのドキュメントで「t2」を検索し、次に、この結果で「t3」を含むドキュメントを見つけます。 " .

私は完全な逆索引を持っています。上記のどの方法が最適化されているか知りたいのですが、(1) または (2) ですか?

どうもありがとう。

4

1 に答える 1

5

ウィキペディアのエントリがよく説明しているように、

転置索引には主に 2 つのバリエーションがあります。レコード レベルの転置索引(または転置ファイル インデックス または単に転置ファイル) には、各単語のドキュメントへの参照のリストが含まれます。単語レベルの転置索引(または 完全転置索引または転置リスト) には、ドキュメント内の各単語の位置が追加で含まれています。後者の形式はより多くの機能 (フレーズ検索など) を提供しますが、より多くの時間とスペースを作成する必要があります。

どのバリアントをお持ちか教えていただけないため、ご質問に正確にお答えすることはできませんが、それぞれの可能性について考えてみると役に立ちます。

ドキュメントを開いて検索することは、通常、ドキュメントが非常に小さい場合を除き、コストのかかる操作であるため、最小限に抑えたいと考えていますが、オプション (2) は実際には最小限に抑えません。逆リストがある場合、オプション (1) を使用すると、ドキュメントを開く必要さえありません反転ファイルしかない場合は、必然的にドキュメントを開いてスキャンする必要があります (そうしないと単語の隣接性を確認するための情報が不足するため) -- ただし、少なくともオプション (1) を使用すると、開く必要があるドキュメントの数を最小限に抑えることができます。そしてスキャンします(各単語を含むドキュメントのリストの交差点にあるもののみ)。

したがって、どちらの場合も、オプション (1) の方が有望です (ドキュメントが特に小さい場合を除きます)。

于 2010-04-17T17:16:06.243 に答える