この例では、クエリ結果におけるページングおよび、検索クエリの単語を強調表示して検索結果をプレビュー表示する方法を紹介します。
ナレッジベース内の Customer (顧客) という名前の BC (ビジネスコンポーネント) トランザクションを使用します。このトランザクションは検索可能です ( [ Searchable ] プロパティが True に設定されています)。
また、会計エントリーがデータベースまたはファイルに格納されているため、検索可能な情報のタイプがもう 1 つあります。
[ 検索 ] Web Panel オブジェクトをプログラムするには、次の変数を定義します:
- SearchResult データタイプの &SearchResult
- SearchResultItem データタイプの &SearchResultItem
- 検索結果をロードするのに使用する文字の変数である &Title、&Type、&Score、および &TimeStamp
設計時のフォームは次のとおりです:
次に検索を実行するコードを示します:
Sub 'Paging'
&SearchResult = TextSearch.Find(&searchpattern,&items,&pageNumber)
for &SearchResultItem in &SearchResult.Items()
&title = &searchResultItem.Title
&title.Link = &searchResultItem.Viewer
&type = &searchResultItem.Type
&score = &SearchResultItem.Score
&TimeStamp = &SearchResultItem.TimeStamp
if &type = 'Customer'
&customer.Load(&SearchResultItem)
&preview = TextSearch.HTMLPreview(&customer,&searchpattern,'HTML','<span STYLE="background: yellow"> ','</span>',200,1)
endif
grid1.Load()
endfor
EndSub
&Type (&searchResultItem.Type) の値に基づいて TextSearch.HTMLPreview 関数を呼び出す点に注意してください。 下図はこの例の実行時の状況です:
構築およびインデックス作成済みのテキストの形式は次のとおりです: 項目属性 <1> タイトル + " " + 項目属性 <1> 値 + ....項目属性<n> タイトル + 項目属性<n> 値
結果として、この例では Customer Name (顧客名) および Customer Address (顧客住所) がインデックスに含まれ、対応する値が続きます。これらは、CustomerName の Title (タイトル) および CustomerAddress 項目属性などです。
また、実行時にはユーザーに対して各項目属性のラベルとしてコンテキストタイトルを表示します。
ユーザーが Sarah という名前の顧客を探したい場合、検索クエリは「Customer name Sarah」(顧客名 Sarah) となります。これは、トランザクションの名前が「顧客」であり、ユーザーが検索したいコンテキストタイトルが「名前」であるためです。
こちらからサンプルをダウンロードできます。
アプリケーションの全文検索
全文検索の例
Full Text Search データタイプ
|