ローカル+ファイルサーバーのドキュメント検索のため、下記のページを参考にHTML+Javascriptをカスタマイズして検索画面を作成していたのだが…「拡張子絞り込み」の実装で躓いたので備忘もかねてまとめておく。
Fess で作る Elasticsearch ベースの検索サーバー 〜 API 編
1.状況
そもそもExtra Query関連のドキュメントが見つけられなかったのだが※、何処かにまとまっているのだろうか。。
※
Fess 12.1現在、ここ(検索API)以外にそれっぽい記載がある場所がみつけられず…
デフォルトのFess検索画面を参考に、Word/Excel拡張子指定には下記をクエリパラメータに付与すれば良いことは解ったが、ex_qに何を指定できるのか全然わからない。
~&ex_q=filetype%3Aword
~&ex_q=filetype%3Aexcel
しかもこれではxlsとxlsx、docとdocxの区別も付けられない様子。
2.対応
Fessのソースリポジトリにマッピングを定義しているらしき場所を発見。
(自分の場合は\app\WEB-INF\env\crawler\resources
配下にあった)
どうやらMIMEタイプ名(参考:MIMEタイプ名)にて記載されているようなので、分類したい箇所の名称を変えてみる。
<postConstruct name="add">
<arg>"application/vnd.ms-excel"</arg>
<arg>"excel"</arg>
</postConstruct>
・・・
<postConstruct name="add">
<arg>"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"</arg>
<arg>"excel"</arg>
</postConstruct>
↓
<postConstruct name="add">
<arg>"application/vnd.ms-excel"</arg>
<arg>"xls"</arg>
</postConstruct>
・・・
<postConstruct name="add">
<arg>"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"</arg>
<arg>"xlsx"</arg>
</postConstruct>
これで検索クエリを書き換えてあげれば完了。
~&ex_q=filetype%3Axls
~&ex_q=filetype%3Axlsx
*追記
(2018-06-05)
引用しておきながらよく読めていなかった…検索クエリに直接mimetypeを指定できるので、今回の既存マッピングの書き換え手順をすっ飛ばして
~&ex_q=mimetype%3A...
と指定するのもあり。
(再)参考:検索API
※"各要素については以下の通りです。"の箇所