前回の例である全文検索の例 2 に、検索クエリの精度を上げるためのディクショナリーを追加できるようにしてみましょう。
ユーザーが検索している単語がインデックスにない場合は、検索する候補として別の単語や語句をユーザーに示します。このために使用する関数は、TextSearch.CheckSpell です。候補として示す単語は、ディクショナリーの中から選びます。つまり、CheckSpell は、ユーザーが検索している各単語と最もよく似たものを返します。
ディクショナリーは、TextSearch.BuildDictionary 関数を使用してインデックスから構築します。
Event 'ReindexAll'
&er = TextSearch.ReindexAll()
&BooleanVar = TextSearch.BuildDictionary()
EndEvent
[ 検索 ] Web Panel オブジェクトにあるコードは次のとおりです。次に注意してください:
- SearchResult データタイプの &SearchResult
- SearchResultItem データタイプの &SearchResultItem
&SearchResult = TextSearch.Find(&searchpattern,&items,&pagenumber)
&maxItems = &SearchResult.MaxItems
&elapsedTime = &SearchResult.ElapsedTime
if &maxItems = 0 //検索結果なし
&suggestword = TextSearch.CheckSpell(&searchpattern)
if &suggestword = ' '
&tpage = 0
msg(format("Your search - <b>%1</b> - did not match any documents.", &searchpattern))
else
msg('Did you mean ..' + &suggestword + ' ?') &searchpattern = &suggestword
endif
endif
注
ディクショナリー (HTML 形式でダウンロードできるもの) がある場合、そのインデックスを作成してから BuildDictionary を呼び出すことができます。
参考情報
アプリケーションの全文検索
全文検索の例
Full Text Search データタイプ
|