アプリケーションの設計


検索フォームをカスタマイズする
検索ユーティリティにより、ユーザーは個々のアプリケーションまたはドメイン全体の情報を検索できます。検索フォームは、組織のニーズに合わせてカスタマイズできます。たとえば、アプリケーションの開発者は、会社のロゴをフォームに追加したり、フィールドの配置を変更できます。

また、カスタムフォームを個々のデータベースに追加して、個々のデータベース内で Web 検索をカスタマイズできます。

個々のアプリケーションの検索設定について詳しくは、「データベースコピーの全文索引を作成する」を参照してください。ドメイン検索の設定について詳しくは、『Lotus Domino Administrator 7 ヘルプ』を参照してください。

フォームをカスタマイズするには、次のことができます。


検索入力フォームをカスタマイズする

ドメイン検索の場合、Lotus Notes クライアントではカタログサーバーの catalog.nsf というデータベースにある [DomainQuery] という名前のフォームを検索フォームとして使用します。このフォームでは FTDomainSearch メソッドを使用して、検索を実行します。Web ドメイン検索の場合、URL コマンド [OpenForm] により任意のフォームを使用できます。また、URL コマンド用の引数として、またはフィールドの取得値により引数を与えることで URL コマンド [SearchDomain] を構築し、呼び出して、検索を実行します。

Web 上で個々のデータベースを検索する場合、URL コマンド [$SearchForm?SearchView] を使用して実行できます。この場合、Lotus Domino は実際の名前または別名「$$Search」の付いたフォームを、現在のデータベースで検索します。フォームが存在する場合は、そのフォームを開きます。フォームが存在しない場合は、Domino\Icons ディレクトリに保存されている search.h ファイルを基に、デフォルトの検索フォームが表示されます。[$$Search] フォームの場合、URL コマンド用の引数として、またはフィールドの取得値により引数を与えることで URL コマンド [SearchView] を構築し、呼び出して、検索を実行します。デフォルトの search.h フォームもカスタマイズできます。

Web 用の検索情報フォームをカスタマイズする場合は、次の表を参照してください。この表には、SearchDomain または SearchView URL を介して初期検索を実行するために使用される URL コマンド用の引数が一覧表示されています。結果ページ上では、結果フォームのボタンとホットスポットがこれらの値を使用できます。たとえば、最初の検索フォームで &SearchOrder=2 を指定します。結果ページでは、[SearchOrder] フィールドの値は 2 です。結果フォームの [次へ] ボタンは、この値を次ページのために使用できます。または、違う値を指定して上書きしてもかまいません。

一部のフィールドでは、TRUE または FALSE を指定できますが、これらの値を結果ページへ引き渡すと、値は 1 または 0 になります。
省略可能な引数説明デフォルト値
Query検索文字列なし
SearchMax返されるエントリ合計の最大値です。0 を指定すると無制限になります。なし。SearchMax のデフォルト値と最大値は、Domino ディレクトリの設定により Web サーバー用に設定することができます。
SearchWv語尾変化を設定します。TRUE (または 1) または FALSE (または 0)FALSE
SearchOrder1 = 該当語句の頻度順

2 = 古い順

3 = 新しい順

4 = 表示順 (SearchView の場合のみ)

1
SearchThesaurus類義語、同義語を使用します。TRUE (または 1) または FALSE (または 0)

(このオプションは R5 の検索エンジンでは無視されます。)

FALSE
SearchFuzzyあいまい検索を使用します。TRUE (または 1) または FALSE (または 0)FALSE
SearchEntry検索結果の各エントリ用に使用するフォーム名

(SearchDomain の場合のみ)

ResultEntry
Start結果をページで区切った場合の最初の文書です。0 を指定するとページ区切りがなくなります。0
Count結果をページで区切った場合の結果文書数です。0 を指定するとページ区切りがなくなります。0
範囲検索範囲

1 = Lotus Notes データベースのみ

2 = ファイルシステムのみ

0 = 両方

0
IBM(R) Lotus Notes(R) クライアント用に検索フォームをカスタマイズする場合には、FTDomainSearch メソッドを使用する必要があります。

ヘッダー情報を検索する (作成日または修正日による検索)

エージェントの全文検索入力エリアの隣に表示される [検索の追加] ボタンをクリックすると、「作成日」または「更新日」を基準に文書を検索できます。FTSearch メソッドで使用するためにこのような問い合わせを記述する場合、次の特殊なアイテム名を使用できます。
ヘッダーフィールドアイテム名
CREATION DATE_CreationDate
REVISION DATE_RevisionDate
DB TITLE (ドメイン索引の場合のみ)_Title
DB CATEGORIES (ドメイン索引の場合のみ)DbCategories
NOTE TITLE_Note_Title
AUTHOR_Note_Author
たとえば、2000 年 1 月 5 日より以前に作成された全文書を検索するには、次の検索文字列を使用します。

[_CreationDate] < 01/05/2000

文書に保存されているフィールド名はありません。つまり、実際の日付はフィールドからではなく文書のヘッダーから取得します。したがって、これらの文書の予約名は、[文書のプロパティ] ダイアログボックスのフィールド項目に表示されていなくても使用できます。

たとえば、「過去 <n> 日間」というように、現在の日付からの差に基づき文書を検索する検索ビルダー機能に対応する構文はありません。実行時にエージェントにより実際の日付を取得する必要があります (エージェントは現在の日付を調整して実際の日付を計算できます)。日付の形式はユーザー設定により異なります。また、問い合わせを評価するワークステーションまたはサーバーに合った形式を使用する必要があります。

ドメイン検索の結果フォームをカスタマイズする

検索結果は、SearchResults、ResultEntry、および DetailedResultEntry のフォームを使用して表示されます。SearchResults フォームは、結果の各ページのレイアウトを定義します。ResultEntry フォームと DetailedResultEntry フォームは、ページ内の 1 つの結果のフォーマットを定義し、結果が返却されるたびに繰り返されます。Web 上では、[SearchEntry] フィールド/引数を使用して、このフォームの名前を指定します。次に示すフィールドは ResultEntry フォームおよび DetailedResultEntry フォーム用です。
フィールド名説明
DSCreationTime文書の作成時刻
DSModifiedTime文書の更新時刻
DSURL文書の URL
DSDBTitleデータベースタイトル
DSDocSummary文書の概要
DSDocTitle文書のタイトル
DSDocAuthor文書の作成者
DSScore適合スコア
DSSServer文書の索引が作成されているサーバー名
DSTypeLotus Notes 文書の場合は 0、外部またはファイルシステムの文書の場合は 1
必要に応じて、結果フォームに名前を付けることができます。そしてその名前を、SearchDomain URL 内に指定するか、FTDomainSearch の LotusScript 呼び出しに指定します。URL で名前が指定されていないと、$$SearchDomainTemplate という名前のフォームが検索されます。

ドメイン検索の結果フォームを設計したり、表示するときは、ドメインインデクサが結果に表示する文書タイトルをどこから取得するのかを知っておくと便利です。インデクサは、各文書で次の Lotus Notes フィールドまたはアイテムを順番に検索します。これらのフィールドまたはアイテムは、文書のタイトルを表すのに使用します。[Title]、[Subject]、[Headline]、および [Topic] の各フィールド、ウィンドウのタイトル (Lotus Domino アプリケーションの開発者が指定した順序で検索)、およびビューの概要 (デフォルトのフォームおよびビューを使用して検索)。これらのアイテムが見つからない場合は、ドメインインデクサにより「Document has no title」というメッセージが結果として表示されます。

Lotus SmartSuite(R) や Microsoft Office などのファイルシステムでは、タイトルおよび作成者が文書のプロパティの各フィールドから抽出されます。HTML ファイルの場合、<TITLE> タグおよび <AUTHOR> タグを使用します。

SearchResults、ResultEntry および DetailedResultEntry の使い方について

次に示す LotusScript は、Lotus Notes クライアントが検索フォーム上で使用する検索アクションホットスポットの click イベントに割り当てられています。結果フォームと結果エントリフォームの名前を呼び出す行は、太字で示されています。

Sub Click(Source As Button)
Dim s As New NotesSession
Dim db As NotesDatabase
Dim w As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim q As String
Dim l As Integer
Dim d As Integer
Dim sort As String
Dim stype As Integer
Dim useint As Integer
Dim rtype As String
Dim rformname As String
Set db=s.CurrentDatabase
Set uidoc = w.currentdocument
uidoc.refresh
Set doc=uidoc.Document

q=doc.query(0)
l=doc.resultlimit(0)
d=doc.MaxDisplay(0)
sort = doc.sort(0)
usestr = doc.use
sscope=doc.searchscope
rtype=doc.GetItemValue("SearchType")(0)

If rtype = "1" Then

rformname="DetailedResultEntry"Else
rformname="ResultEntry"End If

Select Case sort
Case "R"stype = FT_SCORES
Case "O"stype = FT_DATE_ASC
Case "N"stype = FT_DATE_DES
End Select

Forall values In usestr
If values = "2" Then useint = useint + FT_STEMS
If values = "3" Then useint = useint + FT_FUZZY
End Forall

Forall values In sscope
If values = "1" Then useint = useint + FT_DATABASE
If values = "2" Then useint = useint + FT_FILESYSTEM
End Forall

On Error Resume Next
If db.isopen Then
If Err <> 0 Then
Messagebox STR_DBOPEN_ERROR
Err = 0
Exit Sub
End If

Set srdoc = db.ftdomainsearch(q, l, stype,useint, 0,d,rformname)
If Err <> 0 Then
Messagebox STR_FTERROR_PREFIX & Error$, 0 , STR_ERROR
Err=0
Exit Sub
End If
srdoc.Form="SearchResults"Call w.EditDocument(False, srdoc, True)
End If
End Sub

ヒント Web ブラウザとサーバー間でデータが受け渡されるとき、フィールド値を保持できるようにするには、[フォームのプロパティ] インフォボックスで [すべてのフィールドに HTML を生成する] オプションを選択する必要があります。

Web の SearchView の結果をカスタマイズする

SearchView の Web 検索結果ページをカスタマイズするには:

1. フォームを作成し、次の表に示すフォーム名のいずれかを割り当てます。
フォーム名必要なフィールドコメント
$$SearchTemplate for viewname$$ViewBodyフォームを特定ビューに関連付けます。Lotus Domino では、[$$ViewBody] フィールドが必要ですが、値は無視されます。フォーム名には viewname が含まれます。viewname は、ビューの別名ですが、別名がない場合はビュー名になります。たとえば $$SearchTemplate for All Documents という名のフォームでは、そのフォームを [すべての文書] ビューを持つフォームに関連付けます。
$$SearchTemplateDefault$$ViewBodyLotus Domino では、[$$ViewBody] フィールドが必要ですが、値は無視されます。このフォームは、特定のフォームに関連付けられていないすべての Web 検索のデフォルトです。
2. フォームに [$$ViewBody] という名前のフィールドを追加します。

3. ページごとに検索結果を表示する場合は、フォーム間を前後に移動するボタンまたはホットスポットを追加します。

4. URL コマンドでは、Start パラメータと Count パラメータを使用します。

URL コマンドについて詳しくは、「Web アプリケーションのためのプログラミングオプション」を参照してください。

ページング結果にナビゲーションボタンを使用する

結果のページの間を前後に移動できるようにするには、SearchResults フォームにボタンまたはホットスポットを追加します。 [次へ] および [前へ] ボタンが使用できるフィールドの一覧を、次の表に示します。Lotus Notes クライアントでは、ボタンは修正済み引数を持つ LotusScript の FTDomainSearch 関数を再呼び出しする必要があります。Web では、ボタンは結果の新しいセットを取得するための新規 SearchDomain URL の作成に使用されます。

メモ 検索結果のフォーム上で編集可能フィールドを使用するには、データベースプロパティの [Web アクセス: ページ生成時に JavaScript を使用] オプションを選択します。このオプションを選択すると、click イベントが発生したときに、ホットスポットまたはボタンに割り当てられた URL が計算されます。このオプションを選択しないと、URL はページがロードされるときに計算されます。
フィールド説明
Query使用される検索文字列です。
Start開始文書番号です。
Countこのページで要求された結果の数です。
Hitsこのページに返された結果の実際の数で、要求された Count よりも少ない場合があります。このフィールドは、[次へ] ボタンの Start パラメータを定義するのに便利です。
TotalHits検索によって見つかったヒットの合計数です。
SearchMax返されるエントリ合計の最大値です。0 を指定すると制限なしになります。
SearchWv
(URL コマンド専用)
語尾変化を設定します。1 または 0
SearchOrder
(URL コマンド専用)
1 = 該当語句の頻度順
2 = 日付の古い順
3 = 日付の新しい順

4 = 表示順 (SearchView の場合のみ)

SearchThesaurus
(URL コマンド専用)
類義語、同義語を使用します。1 または 0
SearchFuzzy
(URL コマンド専用)
あいまい検索を使用します。1 または 0
SortOptions
(Lotus Notes クライアント専用)
FT_SCORES = 該当語句の頻度順
FT_DATE_ASC = 日付の古い順
FT_DATE_DES = 日付の新しい順
OtherOptions
(Lotus Notes クライアント専用)
FT_STEMS = 語尾変化も含む
FT_FUZZY = あいまい検索を使用する
FT_DATABASE = データベースを検索する
FT_FILESYSTEM = ファイルシステムを検索する
SearchEntry
(ドメイン検索専用)
使用した入力結果フォームの名前
SearchView
(SearchView URL コマンド専用)
検索対象ビューの一意のテキスト識別子。この識別子は、以降の SearchView URL コマンドの構築に使用すると便利です。
Scope
(SearchDomain URL コマンド専用)
検索範囲
1 = Notes データベースのみ
2 = ファイルシステムのみ
0 = 両方
次の表のフィールドは、Start パラメータおよび Count パラメータで使用可能であり、必要に応じて結果フォームに追加する必要があります。
フィールド説明
Hits返されたヒットの実際の数。このフィールドは、[次へ] の Start パラメータを定義するのに便利です。
TotalHitsページ数を考慮しないで返されたヒットの合計数。

関連項目