この付録では、Oracle Textがワード問合せのスコアを計算する方法について説明します。これは、英語のABOUT
問合せのスコアの計算方法とは異なります。SCORE
演算子を使用してスコアを取得します。
この付録の内容は次のとおりです。
ワード問合せで戻されたドキュメントの関連性スコアを計算するために、Oracle TextではSaltonの式に基づいた逆頻度アルゴリズムを使用します。
逆頻度スコア付けでは、ドキュメント・セットで頻出する語句はノイズ語句とみなされるため、これらの語句のスコアは低くなります。ドキュメントのスコアを高くするには、問合せ語句がそのドキュメント内では頻出し、ドキュメント・セット全体としてはほとんど出現しないことが必要です。
次の表では、Oracle Textの逆頻度スコア付けを示します。最初の列はドキュメント・セット内のドキュメントの数を示し、2番目の列はスコアが100になるために必要な、ドキュメント内の問合せ語句の出現回数を示しています。
この表では、ドキュメント・セット内の1つのドキュメントのみが問合せ語句を含んでいると仮定します。
ドキュメント・セット内のドキュメント数 | スコアが100になるために必要なドキュメント内の問合せ語句の出現回数 |
---|---|
1 | 34 |
5 | 20 |
10 | 17 |
50 | 13 |
100 | 12 |
500 | 10 |
1,000 | 9 |
10,000 | 7 |
100,000 | 6 |
1,000,000 | 5 |
表では、ドキュメント・セット内に5つのドキュメントがあり、そのうち1つのドキュメントのみが問合せ語句を含んでいる場合、スコアが100になるには問合せ語句がドキュメントに20回出現する必要があることを示しています。ただし、ドキュメント・セットにドキュメントが1,000,000ある場合、スコアが100になるには、問合せ語句は5回のみ出現すれば十分です。
化学に関するドキュメントが5000あり、語句chemicalがすべてのドキュメントに1回以上は出現するとします。この場合、ドキュメント・セットに対して、語句chemicalは頻出用語となります。
chemicalが5回出現し、語句hydrogenが5回出現するドキュメントが1つあるとします。その他のドキュメントには、語句hydrogenは含まれていません。この場合、ドキュメント・セットに対して、語句hydrogenは頻出用語になりません。
ドキュメント・セットでchemicalは頻繁に出現するため、この問合せ語句のドキュメントに対するスコアは、ドキュメント・セット全体ではほとんど出現しないhydrogenと比べて低くなります。このため、hydrogenに対するスコアは、chemicalに対するスコアより高くなります。両方の語句がそのドキュメントに5回ずつ出現する場合でも、結果は同じです。
注意: ドキュメントで語句hydrogenが4回出現し、語句chemicalが5回出現する場合でも、hydrogenのスコアが高くなります。ドキュメント・セットでは、chemicalが頻出(5000回以上)するためです。 |
また、逆頻度スコア付けでも、hydrogenを含むドキュメントの追加によってドキュメントでのその語句のスコアが下がり、hydrogenを含まないドキュメントの追加によってスコアが上がります。
スコア付けのアルゴリズムはドキュメント・セット内のドキュメント数に基づいているため、ドキュメント・セット内でのドキュメントの挿入、更新または削除によって、DMLの前後に指定した任意の語句のスコアが変更されます。
DMLが重い場合は、索引を最適化する必要があります。索引を最適化した直後に問合せを実行すると、完全に関連ランク付けされます。
DMLが軽い場合でも、非常に正確な関連ランク付けが行われます。
いずれの場合も、CTX_DDL.SYNC_INDEXを使用して索引を同期化する必要があります。