Fessにログインしているユーザーが、自分の最近の検索をもう一度実行できるようにしました。同じキーワードで何度も資料を探すときに、ラベルや並び順などの条件も復元できます。
検索欄から履歴を選ぶ
標準のbootstrapテーマでは、空の検索欄をクリックするか、下矢印キーを押すと最近の検索を表示します。履歴を選ぶと、キーワードと保存された条件で検索をやり直します。
ページを開いて自動的に検索欄へフォーカスしただけでは履歴を表示しません。文字を入力し始めると通常のサジェストへ切り替わります。
同じ条件の検索はまとめて、新しいものから表示します。キーワードのない検索や2ページ目以降のリクエストは履歴の一覧対象にしません。現在の仮想ホストに対応した履歴を取得します。
設定とAPI
fess_config.propertiesに次の設定を追加しました。
search.history.enabled=true
search.history.size=10
デフォルトは有効で、最大10件を返します。ただし、検索ログを無効にしている場合は、この機能も利用できません。
APIはGET /api/v2/search-historyです。ログインセッションのユーザーIDを使い、検索ログから本人の履歴を取り出します。クライアントが任意に指定できるCookieやパラメーターでユーザーを決める方式ではありません。ゲストやアクセストークンによる呼び出しは対象外です。
保存する条件はキーワード、fields.*のフィルター、ex_q、並び順、明示的に指定した言語です。他のテーマで使う場合は、このAPIを利用する表示機能が必要になります。
履歴がすぐに出ない場合
検索ログは定期的にまとめて保存するため、検索直後の履歴反映には最大でおおむね1分かかります。また、今回の変更前のログには検索条件を保存したsearchParamsがないため、古い検索は履歴に表示しません。保存期間は既存の検索ログの削除設定に従います。
あわせて、起動時に設定・ログ・ユーザー系インデックスへ不足する標準フィールドを追加する処理を入れました。これにより、アップグレード済み環境でもsearchParamsを想定した定義で追加できます。既存フィールドの型は変更せず、検索文書インデックスは対象外です。
よく使う検索を条件ごと再利用できるようになり、繰り返し資料を探す際の操作を減らせます。