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

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

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

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

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

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

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

Web 上で個々のデータベースを検索する場合、URL コマンド [$SearchForm?SearchView] を使用して実行できます。この場合、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

検索文字列。詳しくは、Notes クライアントのヘルプで「演算子を使用して検索照会を絞り込む」を参照してください。

なし

SearchMax

返されるエントリ合計の最大値です。0 を指定すると制限なしになります。

なし。Note that

SearchMax のデフォルト値と最大値は、Domino ディレクトリの設定により Web サーバー用に設定することができます。

SearchWv

語尾変化を含みます: TRUE (または 1) または FALSE (または 0)

FALSE

SearchOrder

1 = 該当語句の頻度順

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 = Notes データベースのみ

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

0 = 両方

0

Notes クライアント用に検索フォームをカスタマイズする場合には、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

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

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

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

フィールド名

説明

DSCreationTime

文書の作成時刻

DSModifiedTime

文書の更新時刻

DSURL

文書の URL

DSDBTitle

データベースタイトル

DSDocSummary

文書の概要

DSDocTitle

文書のタイトル

DSDocAuthor

文書の作成者

DSScore

適合スコア

DSSServer

文書の索引が作成されているサーバー名

DSType

Notes 文書の場合は 0、外部またはファイルシステムの文書の場合は 1

必要に応じて、結果フォームに名前を付けることができます。そしてその名前を、SearchDomain URL 内に指定するか、FTDomainSearch の LotusScript® 呼び出しに指定します。URL で名前が指定されていないと、$$SearchDomainTemplate という名前のフォームが検索されます。

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

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

SearchResults、ResultEntry、DetailedResultEntry の使い方について

次に示す LotusScript は、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

    フォームを特定ビューに関連付けます。Domino では、[$$ViewBody] フィールドが必要ですが、値は無視されます。フォーム名には viewname が含まれます。viewname は、ビューの別名ですが、別名がない場合はビュー名になります。例えば $$SearchTemplate for All Documents という名のフォームでは、そのフォームを [すべての文書] ビューを持つフォームに関連付けます。

    $$SearchTemplateDefault

    $$ViewBody

    Domino では、[$$ViewBody] フィールドが必要ですが、値は無視されます。このフォームは、特定のフォームに関連付けられていないすべての Web 検索のデフォルトです。

  2. フォームに [$$ViewBody] という名前のフィールドを追加します。
  3. ページごとに検索結果を表示する場合は、フォーム間を前後に移動するボタンまたはホットスポットを追加します。
  4. URL コマンドでは、Start パラメータと Count パラメータを使用します。

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

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

結果のページの間を前後に移動できるようにするには、SearchResults フォームにボタンまたはホットスポットを追加します。[次へ] と [前へ] ボタンが使用できるフィールドの一覧を、次の表に示します。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
(Notes クライアント専用)

FT_SCORES = 該当語句の頻度順 FT_DATE_ASC = 古い順 FT_DATE_DES = 新しい順

OtherOptions
((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

ページ数を考慮しないで返されたヒットの合計数。