Skip to Content
Product Information
Author's profile photo Sawa Ito

SAP SQL Anywhere の全文検索(過去のブログより)

このページは、以下の英語ページの抄訳です。最新の情報については、英語ページを参照してください。

https://blogs.sap.com/2013/08/20/from-the-archives-full-text-search-in-sql-anywhere/

 

この記事のオリジナルは、Glenn Paulley が sybase.com に 2008 年 5 月に掲載したものです。

 

マイクロソフトリサーチの James Hamilton 氏は、彼の最近のブログ記事で全文テキストに対する彼の熱意を述べていましたが、私もまったく同意です。全文検索機能によってリレーショナルデータベースシステムを拡張することは、多大な機能性と柔軟性をもたらし、これまで効率的にサポートできなかったアプリケーションのクラスが可能になります。

SQL Anywhere では、テキストサーチ – SQL Anywhere 11 の新機能の一部 – は、SQL Anywhere サーバー に完全に統合されています。

システム管理者やデータベース管理者にとって、これは別になっている他のサーバーコンポーネントと一緒にインストール、メンテナンス、調整する必要のあるソフトウェアパッケージがなく、すべてが SQL Anywhere サーバー内に含まれているため、Google スタイルのサーチタームを使用した全文検索が、SQL Anywhere がサポートしているどのプラットフォームでも行えるということを意味します。

さらに、この統合により、アプリケーション開発者は「通常の」リレーショナルオペレーターと全文検索とを同じクエリでフルに活用し、全リクエストを単一の統一されたアクセスプラン内で処理することができます。

 

ランクづけされた結果

全文検索の便利な機能に、ドキュメント(ロー)ランキングがあります。

検索条件にマッチングするすべてのローを(シンプルに)任意の順番で返すのではなく、ランクづけされた検索では、IDF(inverse-document frequency)関数を使用して結果の注記にスコアをつけることが可能です。

IDFのアイディアは、1980年代に Karen Sparck Jones 氏とロンドン大学シティ校の同僚によって開発され、時とともに改良されてきたものです。

SQL Anywhere で利用される IDF 関数は、BM25 アルゴリズムのバリアントで、各ドキュメントに現れるクエリタームの Inverse Frequency をベースにした確率的荷重スキームを使用してドキュメント(ロー)をランクづけします(つまり、めったにドキュメントに現れないタームは、より頻繁に表れるものよりもより重要ということです)。

荷重スキームでは、単一のロー内のクエリーターム間の暗示された関係はすべて無視します(例えば、相対的な近似などにより)。ドキュメント(ロー)の「スコア」を計算する式は、以下のとおりです。

定義

上記の計算式では、q はクエリのターム、nq は検索されている語彙の集合、N は集合内のドキュメント(ロー)の数、f(q,D) は特定のドキュメント(ロー) D 内の qterms の頻度を表します。

|| D || は、ドキュメントの長さ、ADL (average document length)はドキュメントの平均の長さです。

k1b の要素は定数で、SQL Anywhere では、k1 = 1.2 と b = 0.75 です。

ローのスコアは、クエリーの WHERE 句内の CONTAINS述部を使用するよりも、クエリーが CONTAINS ストアドプロシージャーを特定する場合に返されます。

SELECT TOP N のような他の構造物に付随されるスコアの方が、特定のデータベースリクエストに対して「正しい」ローを選択する方法としては、よりリッチな方法を提供します。

 

===

 

SAP SQL Anywhere に関する詳細情報は、SAP SQL Anywhere Communityページ<英語> を参照してください。

 

上記のコミュニティーに掲載されている技術情報は、順次SQL Anywhere 日本語コミュニティ

に掲載しています。

 

SQL Anywhere に関してはまずはこちらをご参照ください。無期限でご利用いただける無償の Developers Edition もこちらからダウンロードが可能です。

 

SQL Anywhere に関して技術的な質問のある方はコミュニティに登録し、
「Ask a Question」機能をご利用ください。

Language には「Japanese」、
Primary Tag には「SAP SQL Anywhere」を選択
User Tagに「sql anywhere」「sql anywhere Japanese question」

を入力してください。

不具合につきましては、サポート契約者様専用の問い合わせ方法にてお問い合わせください。

 

======================
ご購入に関するお問い合わせ

こちらよりお問い合わせください。

Assigned Tags

      Be the first to leave a comment
      You must be Logged on to comment or reply to a post.