サジェスト機能の使い方

【連載】

簡単導入! OSS全文検索サーバFess入門

【第23回】サジェスト機能の使い方

[2020/03/18 07:00]菅谷 信介 ブックマーク ブックマーク

今回はFessのサジェスト機能の使い方と、既存のサイトに設置したFessの検索フォームにサジェストを表示させる方法について紹介しましょう。なお、Fessのバージョンは、Fess-13.6.0を利用します。必要に応じて、公式サイトから入手してください。

サジェスト候補の生成方法

一般的な検索サービスにおいて、「サジェスト」とは予測変換を意味します。Fessのサジェスト機能では、検索窓に調べたいキーワードを入力する際に、入力中のキーワードを補完する候補(サジェスト候補)を表示します。また、そのキーワードに付随してよく調べられる検索語があれば、それも同時に表示し、より適切な絞り込み検索をサポートします。

サジェストの例

Fessでサジェスト候補を生成する方法には、以下の2種類があります。

  • インデックスされたドキュメントから生成
  • 検索ログから生成

以降では、それぞれの方法について説明します。

インデックスされたドキュメントから生成

この方法では、インデックスされたドキュメントに含まれている単語を基にサジェスト候補を生成します。まずは、通常通りにインデックスを作成してください。

Fessの起動後、管理画面にログインし、「クローラ」>「ウェブ」を開きます。今回は以下の設定値でクロール設定を作成します。

項目名 設定値
名前 Fess
URL  https://fess.codelibs.org/ja/
クロール対象するURL https://fess.codelibs.org/ja/.*
最大アクセス数 100
スレッド数 2
間隔 10000

上記の設定で「作成」ボタンを押して設定を保存します。クロールの実行は「システム」>「スケジューラ」>「Default Crawler」で「今すぐ開始」を押下して開始します。

クロールが完了したら、サジェスト候補を生成します。

サジェストのジョブを実行する前に設定を確認しておきましょう。その際、「システム」>「全般」で「ドキュメントでサジェスト」が有効になっているかどうか確認してください。「有効」にチェックが入っていない場合は、チェックを入れて「更新」ボタンを押します。

設定を確認後、サジェストジョブを実行します。「システム」>「スケジューラ」の「Suggest Indexer」をクリックし、「今すぐ開始」を押下します。

サジェスト候補が生成されたかどうかは「サジェスト」>「サジェストワード」の「ドキュメント」の単語数で確認できます。

ドキュメントのサジェスト単語数

単語数が増加していることを確認できたら、検索窓に検索語を入れて検索してみましょう。検索語の候補が表示されていれば成功です。

検索ログから生成

検索ログからサジェスト候補を生成する場合、同じキーワードが複数回検索されると、そのキーワードがサジェスト候補の対象になります。

検索ログからサジェスト候補を生成するには「システム」>「全般」で「検索語でサジェスト」を有効にします。「有効」にチェックが入っていない場合は、チェックを入れて「更新」ボタンを押下してください。

これで検索ログからサジェスト候補が生成されるようになりますが、単純に同じキーワードで検索するだけではサジェスト候補の対象にはなりません。対象にするには、以下の条件で検索することが必要です。

  • HTTPのセッションが同一ではない
  • 同一キーワードで10回以上検索(連続して検索する場合は1分以上間隔を開けて検索してください)

検索ログから生成された単語数を確認するには「サジェスト」>「サジェストワード」の「検索語」の単語数で確認できます。

検索語のサジェスト単語数

複数回検索した検索語がサジェスト表示されていれば成功です。

サジェスト候補の削除

運用上、古いサジェスト候補を残しておきたくないこともあるでしょう。サジェスト候補を削除するには、以下の2つの方法があります。

有効日数を指定して削除

「システム」>「全般」の「以前のサジェスト情報を削除」で日数を指定して「更新」ボタンを押下します。サジェスト情報を削除したくない場合は「以前のサジェスト情報を削除」の日数を「-1」を指定してください。

一括削除

サジェスト候補を一括削除したい場合は、サジェスト画面で削除します。「サジェスト」>「サジェストワード」で削除したい単語種別の「削除」ボタンを押下します。

検索フォームでサジェスト表示

Fessでは、既存のサイトに検索フォームを配置して、Fessの検索結果に誘導することができます。このとき、配置した検索フォームにサジェスト機能を設定することができます。

まずは既存のサイトにFessの検索フォームを配置します。ページ内で検索フォームを置きたい箇所に以下のコードを配置してください。

<form id="searchForm" method="get" action="https://SERVERNAME/search/">
<input id="query" type="text" name="q" maxlength="1000" autocomplete="off">
<input type="submit" name="search" value="検索">
</form>

次にサジェストを表示させるため、以下のコードを「</body>」の前に追加してください。 こちらも同様に、「https://SERVERNAME」のURL部分は構築した FessサーバのURLに変更して利用してください。 既にサイトでjQueryを利用している場合はjQueryのscript要素は追加する必要はありません。

<script type="text/javascript" src="https://SERVERNAME/js/jquery-3.4.0.min.js"></script>
<script type="text/javascript" src="https://SERVERNAME/js/suggestor.js"></script>
<script>
$(function() {
  $('#query').suggestor({
    ajaxinfo : {
      url : 'https://SERVERNAME/suggest',
      fn : '_default,content,title',
      num : 10
    },
    boxCssInfo: {
      border: "1px solid rgba(82, 168, 236, 0.5)",
      "-webkit-box-shadow":
        "0 1px 1px 0px rgba(0, 0, 0, 0.1), 0 3px 2px 0px rgba(82, 168, 236, 0.2)",
      "-moz-box-shadow":
        "0 1px 1px 0px rgba(0, 0, 0, 0.1), 0 3px 2px 0px rgba(82, 168, 236, 0.2)",
      "box-shadow":
        "0 1px 1px 0px rgba(0, 0, 0, 0.1), 0 3px 2px 0px rgba(82, 168, 236, 0.2)",
      "background-color": "#fff",
      "z-index": "10000"
    },
    minterm: 2,
    adjustWidthVal : 11,
    searchForm : $('#searchForm')
  });
});
</script>

サイトのデザインに合わせて、class属性でクラス名を追加するなど、CSSで必要に応じて調整してください。

では、配置した検索フォームで検索語を入力してみましょう。サジェスト表示されていれば成功です。

配置した検索フォームでサジェストを表示

* * *

今回は、サジェスト機能の使い方と、既存のサイトに設置したFessの検索フォームにサジェスト候補を表示させる方法を紹介しました。サジェスト機能は、より適切な検索結果への誘導効果も期待できるので、ぜひ利用してみてください。

著者紹介

菅谷 信介 (Shinsuke Sugaya)

Apache PredictionIOにて、コミッター兼PMCとして活動。また、自身でもCodeLibs Projectを立ち上げ、オープンソースの全文検索サーバFessなどの開発に従事。

※ 本記事は掲載時点の情報であり、最新のものとは異なる場合がございます。予めご了承ください。

一覧はこちら

連載目次

もっと知りたい!こちらもオススメ

【連載】SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~ [1] デジタル時代を生き抜く組織に変わるために

【連載】SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~ [1] デジタル時代を生き抜く組織に変わるために

近年、DXに取り組む企業が増えています。しかし、いざ本格的に実践しようとすると既存のやり方を変えることに反発する部門が出てくるなど、"壁"が立ちはだかることも少なくありません。そうした組織の課題を解決するのに大きな力を発揮するのが大規模アジャイル開発フレームワーク「SAFe」です。本連載では、SAFeを活用してDXの課題を解決する13のアプローチをお伝えして…

関連リンク

この記事に興味を持ったら"いいね!"を Click
Facebook で IT Search+ の人気記事をお届けします
注目の特集/連載
[解説動画] Googleアナリティクス分析&活用講座 - Webサイト改善の正しい考え方
[解説動画] 個人の業務効率化術 - 短時間集中はこうして作る
ミッションステートメント
教えてカナコさん! これならわかるAI入門
AWSではじめる機械学習 ~サービスを知り、実装を学ぶ~
対話システムをつくろう! Python超入門
Kubernetes入門
SAFeでつくる「DXに強い組織」~企業の課題を解決する13のアプローチ~
PowerShell Core入門
AWSで作るマイクロサービス
マイナビニュース スペシャルセミナー 講演レポート/当日講演資料 まとめ
セキュリティアワード特設ページ

一覧はこちら

今注目のIT用語の意味を事典でチェック!

一覧はこちら

会員登録(無料)

ページの先頭に戻る