目次


連載 IBM Notes/Domino の「検索」を使いたおす! 第 3 回「全文検索の応用・実戦」

Comments

第2回は、IBM Notes/Domino 検索機能の基本的な使い方と仕組みについて解説いたしました。全文検索に関する基礎知識を理解していただけたことと思います。(第2回「全文検索の仕組みと基本」

第 3 回は「全文検索の応用・実戦」というテーマで、IBM Notes/Domino 検索機能により踏み込み、便利な検索のテクニックやプログラムからの利用法など、 IBM Notes/Domino の検索機能の活用方法を鬼わかりやすく解説いたします。

1

IBM Notes クライアントの全文検索機能のオプション

第 2 回目の連載の中で IBM Notes クライアントの検索バーの使い方についてご説明しましたが、検索バーを表示して、その中にある [詳細]セクションで検索条件を追加すると、目的の情報を見つけるために検索結果を絞り込むことができます。例えば、特定のフィールドの特定の番号を持つ文書のみ検索したり、指定した日より新しく作成された文書のみを検索したりすることができます。

こうした詳細な条件を使用して全文検索を行うためには IBM Notes アプリケーションに全文索引が作成されていることが前提となります。

まず検索バーが表示されていなければ、検索したいアプリケーションのビューを開き、図 1 のように IBM Notes のメニューバーの「表示(V)」→「検索バー(E)」をクリックして表示します。

図 1. 検索バーの表示

 

検索バーが表示されたら、図 2 の右側にある ③ 矢印のボタンをクリックして [詳細] セクションを開きます。

図 2. 検索バーから [詳細] セクションを表示する

 

図 3 を使って、[詳細] セクションで設定できる検索条件をご紹介していきます。

図 3. 検索バー [詳細] セクションで設定できる検索条件

 

① 指定日や期間の前後、間、以外などに作成・更新された文書に絞り込みます。
② 指定したユーザーによって作成または更新された(されていない)文書に絞り込みます。
③ 特定のフィールドに特定のテキスト、数字、日付けが含まれた文書に絞り込みます。
④ 特定のフォーム(例:通達フォーム)の文書に絞り込みます。複数のフォームを表示するビューでの検索に適しています。
⑤ 特定のキーワードを含む(またはそのキーワードを含まない)文書に絞り込みます。
⑥ サンプルフォームのフィールドに特定のキーワードを含む文書に絞り込みます。
⑦ よく使う検索条件や複雑な条件を、名前を付けて保存しておくことができます。(ただし、アプリケーションに対して [設計者] 以上の権限が必要となり、一般ユーザーは利用できないことがあります)
⑧ ⑦ で保存した検索条件を呼び出し、再利用することができます。
⑨ 検索結果を表示する件数を設定することができます。(サーバー上のアプリケーションではシステム側で値が決まっています。ローカル PC 上のアプリケーションに対しては設定可能。)

それでは実際に、複数の条件を組み合わせた検索を行ってみます。

ここでは、2016 年 4 月 17 日から 2017 年 4 月 17 日までに作成された文書で、作成者が「Kunio Matsuo/Japan/IBM」というユーザーであるものを検索対象とします。

図 4 の ① 「日付」、② 「作成者」をクリックし、該当のキーワード ①’、②’ を設定します。

図 4 のように設定後、検索バーに条件が自動的に挿入されますので、③ 「検索」ボタンをクリックすると、検索結果の文書 ④ が表示されます。

図 4. [詳細] セクションを使用した絞り込み

 

このように単なるキーワード検索では難しい絞り込み検索を、メニュー操作で直感的に行うことが可能です。

さらに応用編として、メニュー操作が面倒である、もっと効率的に使いこなせるよ!というユーザー向けに手軽な絞り込みが可能な演算子を使った検索方法をご紹介いたします。

2

演算子を使った絞り込み検索

複数の文字列を含む文書を検索したり、特定の文言を除外して検索したりする際には、演算子を使って絞り込むことが可能です。

また、検索バーの [詳細] セクションで行ったような、特定のフィールドの存在や、特定のフィールドに含まれる文字列の有無による絞り込み検索も、演算子を利用して行うことができます。

1. AND, OR, NOT

まず、一番単純な演算子は、AND, OR, NOT 3 つです。

AND を使うと、すべての条件と単語を含む文書が検索されます。+ や& での代替も可能です。たとえば、「単語い AND 単語ろ AND 単語は」のように使うと、文中に「単語い」、「単語ろ」、「単語は」を含む文書が検索されます。

前回ご紹介した「検索バーのクエリー構文の設定」が、デフォルトの Web 形式の場合は、AND で接続しなくても、「単語い 単語ろ 単語は」などとスペース区切りで複数の文字を入力すれば、同じ結果を得られます。

OR を使うと、条件か単語のどちらかを含む文書が検索されます。|(縦線) や,(カンマ)での代替も可能です。「単語い OR 単語ろ OR 単語は」で検索すると、文中に「単語い」、「単語ろ」、「単語は」のいずれかが含まれる文書が検索されます。

NOT を使うと、後ろに指定した語句を含む文書が除かれます。!での代替も可能で、Web 形式検索が設定されている場合は、-(マイナス)を使うこともできます。

例えば、「添付」という文字列で検索すると、以下のよう 2 文書が検索されるとします。

図 5

 

このとき、「添付 - Re」や「添付 ! Re」「添付 NOT Re」のように、"Re" という文字列を除外するように検索をすると、以下のよう 1 文書だけが検索結果として返されます。

図 6

 

たくさんの検索結果が返ってきて、余分な検索結果を除外したい場合に、便利な演算子です。

2. IS PRESENT, CONTAINS

次に、"IS PRESENT" と "CONTAINS" を紹介します。両者とも特定のフィールドの値を参照する演算子で、フィールド名を [] で括って使用します。

"IS PRESENT" は、特定のフィールドに値が入っているものだけを検索する演算子です。NOT や ! と組み合わせて、フィールドに値が入っていないものだけを絞り込むこともできます。何らかのフラグやチェックの有無によって、文書を絞り込むような場合に使用します。

ここで、[$FILE] フィールドのように、IBM Notes/Domino が予約しているフィールド名を対象にすることもできます。

例えば、"[$File] IS Present" で検索をすると、添付ファイルが存在している文書だけを絞り込み検索することができます。"NOT [$File] IS Present" や "! [$File] IS Present" の場合は、添付ファイルが存在しない文書の検索に使えます。

図 7

 

"CONTAINS" は、特定のフィールドに、検索文字列が含まれるものだけを絞り込みます。

例えばメールの受信ボックスで、"[Subject] CONTAINS Re" のように検索をすると、件名に "Re" という文字列が入ったものだけを検索できます。この場合も、"NOT [Subject] CONTAINS Re" のように、 "Re" を除外することも可能です。

図 8

 

3. 等号、不等号

数値や日付フィールドを指定して、値を比較した検索に使用できます。=, <, >, <=, >= を使用できます。

例えば、メールの受信ボックスで "[PostedDate]" フィールドを指定すると、送信日による絞り込みが可能になります。

"[PostedDate] >= 2017/01/01" のように検索をすると 2017 年に入ってからのメールのみを検索できます。"[PostedDate] >= 2017/01/01 and [PostedDate] <= 2017/01/31" の場合は 2017 年 1 月のメールのみが絞り込まれます。

図 9

 

4. 演算子の組み合わせ

上記の演算子は、AND, OR, NOT で組み合わせていくことも可能です。

例えば受信ボックスで、"[PostedDate] > 2017/01/01 and [PostedDate] < 2017/01/31 and [From] CONTAINS tanaka" で検索すると、1 月に tanaka さんから届いたメール」だけが表示されます。

"[AltFrom] CONTAINS 田中 and [$FILE] IS PRESENT" の場合には、「DJX 別名に田中が含まれるユーザーから届いた添付ファイルつきのメール」だけが絞りこまれます。

図 10

 

5.iNotes, Web アプリケーションで利用可能な演算子

演算子の一部は、Web ベースである iNotes(Notes メールの Web 版)や Web アプリケーションの検索でも使用出来るものがあります。

例えば、上記で紹介した「AND」「OR」「NOT」が利用可能です。

なお、「CONTAINS」「IS PRESENT」、等号、不等号記号は使用できませんのでご注意ください。

この他にもいくつかの演算子がありますが、詳しくはヘルプ文書「演算子を使用して検索照会を絞り込む方法」を参照して下さい。

3

検索機能プログラミング

ここまで解説してきた全文検索の機能はプログラムからも利用する事ができます。具体的には全文検索を実行して、その結果を返すためのメソッドが Notes C API、Notes Java API、LotusScript および XPages アプリケーションで利用できるサーバーサイド Javascript に用意されています。それぞれの言語においてほぼ同様の条件で使用する事が可能なので、ここでは LotusScript を利用した際の使用方法を解説します。

全文検索を実行してその結果を返すメソッドとして FTSearch() が NotesDatabase クラス、NotesDocumentCollection クラス、NotesViewEntryCollection クラス、NotesView クラスに用意されています。どのクラスから利用した際も FTSearch() の利用方法は共通となっています。違いは、検索対象となる領域になります。NotesDatabse クラスの場合には対象となる Notes アプリケーション全体になりますし、NotesView クラスの場合には対象となるのは指定された Notes アプリケーションのビューに表示されている文書となります。

FTSearch() を実行した際の返り値は検索にヒットした文書のコレクション (notesDocumentCollection) となります。利用できるパラメーターは検索クエリ、検索最大数、オプションになります。検索クエリには前章で紹介した演算子をそのまま利用する事が可能です。オプションでは ① 章で紹介したあいまい検索などの検索オプションの指定や、検索結果のソート順を指定する事が可能になっています。具体的には以下のようなコードで全文検索をプログラムから実行する事が可能です。

<code>
Dim session As New NotesSession
Dim db As NotesDatabase
Dim collection As NotesDocumentCollection

Set db = session.CurrentDatabase
Set collection = db.FTSearch( "検索クエリ", 0 , FT_SCORES, FT_STEMS)
</code>

FTSearch() に用意されている引数の詳細についてはヘルプ文書を参照してください。

なお、FTSearch() を利用する際には対象となる Notes アプリケーションに全文索引があることが望ましいです。Notes クライアントから同様に全文索引が存在しない場合には検索に時間がかかる上に精度も低くなってしまいます。プログラムから Notes アプリケーションに全文索引が存在するかどうかは、NotesDatabase クラスの IsFTIndexed プロパティで確認する事が可能です。全文索引が存在していなかった場合かつ対象の Notes アプリケーションがローカルに存在している場合には NotesDatabase クラスの UpdateFTIndex() メソッドで全文索引を作成する事も可能です。同じメソッドで、すでに存在している全文索引を更新する事も可能になっています。

FTSearch() メソッドを利用してアプリケーション内で全文検索の機能を利用する事が可能ですので利用してみてください。

4

まとめ

連載第 2 回、第 3 回と続けて Notes の全文検索機能についてご説明しました。

全文検索機能を使えば、Notes アプリケーションに含まれる文書の情報は複数の方法で結果を得られることがご理解いただけたと思います!

連載第 4 回の次回は、Notes ドメイン内の IBM Domino サーバー上にある文書を串刺しで検索することができる「ドメイン検索」機能について、鬼わかりやすく解説いたします。お楽しみに!


ダウンロード可能なリソース


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Lotus
ArticleID=1045111
ArticleTitle=連載 IBM Notes/Domino の「検索」を使いたおす! 第 3 回「全文検索の応用・実戦」
publish-date=04272017