アプリケーションの設計
また、カスタムフォームを個々のデータベースに追加して、個々のデータベース内で 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 になります。
2 = 古い順
3 = 新しい順
4 = 表示順 (SearchView の場合のみ)
(このオプションは R5 の検索エンジンでは無視されます。)
(SearchDomain の場合のみ)
1 = Lotus Notes データベースのみ
2 = ファイルシステムのみ
0 = 両方
ヘッダー情報を検索する (作成日または修正日による検索)
エージェントの全文検索入力エリアの隣に表示される [検索の追加] ボタンをクリックすると、「作成日」または「更新日」を基準に文書を検索できます。FTSearch メソッドで使用するためにこのような問い合わせを記述する場合、次の特殊なアイテム名を使用できます。
[_CreationDate] < 01/05/2000
文書に保存されているフィールド名はありません。つまり、実際の日付はフィールドからではなく文書のヘッダーから取得します。したがって、これらの文書の予約名は、[文書のプロパティ] ダイアログボックスのフィールド項目に表示されていなくても使用できます。
たとえば、「過去 <n> 日間」というように、現在の日付からの差に基づき文書を検索する検索ビルダー機能に対応する構文はありません。実行時にエージェントにより実際の日付を取得する必要があります (エージェントは現在の日付を調整して実際の日付を計算できます)。日付の形式はユーザー設定により異なります。また、問い合わせを評価するワークステーションまたはサーバーに合った形式を使用する必要があります。
ドメイン検索の結果フォームをカスタマイズする
検索結果は、SearchResults、ResultEntry、および DetailedResultEntry のフォームを使用して表示されます。SearchResults フォームは、結果の各ページのレイアウトを定義します。ResultEntry フォームと DetailedResultEntry フォームは、ページ内の 1 つの結果のフォーマットを定義し、結果が返却されるたびに繰り返されます。Web 上では、[SearchEntry] フィールド/引数を使用して、このフォームの名前を指定します。次に示すフィールドは ResultEntry フォームおよび DetailedResultEntry フォーム用です。
ドメイン検索の結果フォームを設計したり、表示するときは、ドメインインデクサが結果に表示する文書タイトルをどこから取得するのかを知っておくと便利です。インデクサは、各文書で次の 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. フォームを作成し、次の表に示すフォーム名のいずれかを割り当てます。
3. ページごとに検索結果を表示する場合は、フォーム間を前後に移動するボタンまたはホットスポットを追加します。
4. URL コマンドでは、Start パラメータと Count パラメータを使用します。
URL コマンドについて詳しくは、「Web アプリケーションのためのプログラミングオプション」を参照してください。
ページング結果にナビゲーションボタンを使用する
結果のページの間を前後に移動できるようにするには、SearchResults フォームにボタンまたはホットスポットを追加します。 [次へ] および [前へ] ボタンが使用できるフィールドの一覧を、次の表に示します。Lotus Notes クライアントでは、ボタンは修正済み引数を持つ LotusScript の FTDomainSearch 関数を再呼び出しする必要があります。Web では、ボタンは結果の新しいセットを取得するための新規 SearchDomain URL の作成に使用されます。
メモ 検索結果のフォーム上で編集可能フィールドを使用するには、データベースプロパティの [Web アクセス: ページ生成時に JavaScript を使用] オプションを選択します。このオプションを選択すると、click イベントが発生したときに、ホットスポットまたはボタンに割り当てられた URL が計算されます。このオプションを選択しないと、URL はページがロードされるときに計算されます。