この付録では、Oracle Textでワード問合せのスコア付けがどのように計算されるかを説明します。この方法は、英語でのABOUT
問合せのスコア計算とは異なります。スコア付けはSCORE
演算子を使用して取得されます。
この付録の内容は次のとおりです。
関連項目:
"ユーザー定義のスコア付けについては、「DEFINESCORE」および「DEFINEMERGE」を参照してください。
ワード問合せで戻されたドキュメントの関連性スコアを計算するために、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 |
セット・サイズによって、スコアが異なります。たとえば、セットの1つのドキュメントにのみ問合せ語句が含まれ、セットに5つのドキュメントが存在する場合、スコアを100にするには、ドキュメントに語句が20回出現する必要があります。1,000,000個のドキュメントがセットに存在する場合、ドキュメントに語句が5回出現するだけでスコアが100になります。
化学に関するドキュメントが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を使用して索引を同期化する必要があります。
関連項目: