最近のアクセス:
全文検索の例 3

前回の例である全文検索の例 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 データタイプ










サブページ
Created: 14/09/18 03:19 by Admin Last update: 21/10/28 23:32 by Admin
カテゴリ
Powered by GXwiki 3.0