InterSystems IRIS の基礎 : SQL Search
ここでは、InterSystems IRIS® による SQL テキスト検索のサポートを紹介します。SQL テキスト検索は、さまざまな言語の構造化されていないテキスト・データに対して、意味的コンテキスト検索を行います。ここでは、以下のトピックについて説明します。
オンラインの実践演習で SQL Search を使用するには、"Searching Unstructured Text DataOpens in a new tab" を参照してください。SQL Search の完全なドキュメントは、"SQL Search の使用法" を参照してください。
SQL Search は、検索する内容をユーザが認知していることを前提としています。そのため、テキストの内容に関する予備知識を必要としないことが多い、構造化されていないテキスト・データの自然言語処理 (NLP) 分析とは異なります。
SQL Search が重要な理由
意味的インデックスと分析インデックス (エンティティおよび言語認識検索) を必要とする SQL Search 機能では、InterSystems IRIS 自然言語処理 (NLP) を使用しますが、インターシステムズではこれは非推奨Opens in a new tabとなっています。このため、これらの機能はインターシステムズ製品の今後のバージョンから削除される可能性があります。以下のドキュメントは、既存ユーザのリファレンスとしてのみ提供されます。代わりのソリューションを見つけるサポートを希望する既存ユーザは、インターシステムズのサポート窓口Opens in a new tab にお問い合わせください。
構造化されていないテキスト・データをすばやく検索する機能は、多くの企業や機関に一般的に保存されている膨大な量のテキストの内容にアクセスするための根幹となるものです。こうしたデータに対する検索機能には、以下のような機能が必要です。
-
高速検索: InterSystems IRIS SQL Search では、データそのものをシーケンシャル検索するのではなく、データに対する生成済みの最適化されたインデックスを検索するので、大量のデータをすばやく検索できます。
-
単語認識検索: SQL Search は文字列検索ではなく、テキストの意味的構造に基づく検索です。SQL Search の最も基本的な意味的構造は単語です。これにより、文字列検索が別の単語に埋め込まれた文字列を見つけた場合や、1 つの文字列が 2 つの単語をブリッジしている場合に起こる誤検出の数が減少します。
-
エンティティ認識検索: SQL Search では、意味的関係性によってグループ化されてエンティティを形成する複数の単語が考慮に入れられます。このため、指定された順序の複数の単語 (位置句)、(順序に関係なく) 相互の特定の近似範囲内で表示される単語、およびエンティティの先頭または末尾にある単語を検索できます。これにより、その他の単語の指定されたコンテキスト内にある単語 (または語句) に検索を絞り込むことができます。
-
言語認識検索: 単語間の意味的関係性の識別は、言語に固有のものです。SQL Search には、10 個の自然言語の意味規則 (言語モデル) が含まれています。その他の言語もサポートしています。辞書やオントロジを作成または関連付けする必要はありません。
-
パターン・マッチング: SQL Search では、文字パターンの照合のために、ワイルドカード・マッチングと正規表現 (RegEx) マッチングの両方を実行できます。
-
ファジー・マッチング: SQL Search では、ほぼ一致するものに対するファジー検索ができます。ここでは、検索文字列からの計算された自由度が考慮に入れられます。これにより、特にスペル・エラーの照合が可能になります。
-
派生マッチング: SQL Search は複合語分解を使用して、語幹と構成単語を照合します。SQL Search では同義語テーブルを使用して、同義語や同義の語句を照合できます。
InterSystems IRIS による SQL Search の実装方法
意味的および分析 SQL Search インデックスでは InterSystems IRIS 自然言語処理 (NLP) を使用しますが、インターシステムズではこれは非推奨Opens in a new tabとなっています。このため、これらの機能はインターシステムズ製品の今後のバージョンから削除される可能性があります。以下のドキュメントは、既存ユーザのリファレンスとしてのみ提供されます。代わりのソリューションを見つけるサポートを希望する既存ユーザは、インターシステムズのサポート窓口Opens in a new tab にお問い合わせください。
SQL Search では、SQL テーブル内の列にあるテキスト・データを検索できます。このためには、テキスト・データを含む列に対して SQL Search インデックスを作成する必要があります。InterSystems では、テーブル列を永続クラス内のプロパティとして実装します。
使用可能なインデックスには、基本、意味的、分析の 3 つのレベルがあり、それぞれが追加の機能とそれより下位レベルのすべての機能をサポートします。
-
基本は、単語検索と位置句検索をサポートします。ここには、ワイルドカード、句内の単語の間の範囲、正規表現 (RegEx) マッチング、同時検索の使用が含まれます。
-
意味的は、基本のすべての機能をサポートし、InterSystems IRIS 自然言語処理 (NLP) エンティティもサポートします。エンティティや、エンティティで始まるかエンティティで終わる単語または語句を検索できます。NLP 属性 (否定など) を認識します。
-
分析は、意味的機能をすべてサポートし、NLP パスもサポートします。NLP の優位性と近似のスコアに基づいて検索を行うこともできます。
インデックスを生成します。すべての SQL インデックスと同様に、テーブルにデータが入力された後に、ユーザがインデックスを直接構築するか、ユーザが空のテーブルにレコードを挿入すると、SQL によってインデックス・エントリを自動的に構築されるようにできます。どちらの場合でも、SQL は後続の挿入、更新、または削除操作の一環として、このインデックスを自動的に更新します。
SELECT クエリを記述した SQL Search を実行します。この中の WITH 句には %ID %FIND search_index() 構文が含まれます。search_index() 関数パラメータには、SQL Search インデックスの名前と検索文字列が含まれます。この検索文字列にはワイルドカード、位置句、エンティティの構文の文字を含むことができます。検索文字列には、AND、OR、NOT 論理演算子を含むこともできます。
SQL Search の詳細
インターシステムズでは、SQL Search を詳細に学習できるように、以下のようなその他のリソースも提供しています。