💨

【Omeka S モジュール改修】IIIF Searchモジュール

2022/11/24に公開

概要

IIIF Search は、全文検索のための IIIF Search Api を追加する Omeka S 用モジュールです。

https://github.com/symac/Omeka-S-module-IiifSearch

今回は上記のモジュールの改修を行いました。pull requestを送付済みですが、以下のリポジトリで改修したモジュールをご利用いただけます。

https://github.com/nakamura196/Omeka-S-module-IiifSearch

具体的にな改修内容としては、クエリ文字列の下限が1文字に設定されていましたが、これを設定フォームで変更できるようにしました。デフォルトでは3文字に設定されており、漢字1文字などでの検索ができなかったため、本改修を行いました。

改修内容

以下の4つのファイルを修正しました。

  • config/module.ini
  • src/Form/ConfigForm.php
  • Module.php
  • src/View/Helper/IiifSearch.php

config/module.ini

https://github.com/nakamura196/Omeka-S-module-IiifSearch/commit/d2707361d9aa038c3f7da2db559051386f15e222#diff-a3f073087bb51946398c23263f05539c4d57e12b198f9ba0a0887b0a2e9f710b

configurabletrueに変更しました。これにより、モジュールインストール後に、以下のような設定画面が表示されます。

src/Form/ConfigForm.php

https://github.com/nakamura196/Omeka-S-module-IiifSearch/commit/d2707361d9aa038c3f7da2db559051386f15e222#diff-8535197317d24c4a15681f0ba9fa1e762040d2e3984f5d1981471092a4946f74

上記画面の設定画面での表示内容は、src/Form/ConfigForm.phpを編集することで実現できます。

iiifsearch_minimum_query_lengthを設定値を追加しています。

Module.php

https://github.com/nakamura196/Omeka-S-module-IiifSearch/commit/d2707361d9aa038c3f7da2db559051386f15e222#diff-074f64cd19bc13bc527290951a58a65cb54f2f35a43ce5bf95e5dbb20b4d297d

上記の画面に関する設定は、Module.phpを修正することで実現します。

具体的には、getConfigFormhandleConfigFormフォームを追加しています。

また、モジュールのインストール時およびアンインストール時の処理を設定するinstallおよびuninstall関数を追加して、iiifsearch_minimum_query_lengthの初期値の設定および削除を行なっています。

src/View/Helper/IiifSearch.php

https://github.com/nakamura196/Omeka-S-module-IiifSearch/commit/d2707361d9aa038c3f7da2db559051386f15e222#diff-130dd3b86192225df59328df92c2bed1f2b2de8ba3f561946e2dcfcb5da7d8b8

最後に、src/View/Helper/IiifSearch.phpを変更します。minimumQueryLengthが3で設定されていた箇所について、$this->view->setting('iiifsearch_minimum_query_length')で設定値を読み取り、minimumQueryLengthの値としています。これにより、例えば日本語を扱う場合には、設定画面でminimumQueryLengthを1に設定することにより、1文字からの検索が可能になります。

まとめ

本モジュールを利用する際の、特に日本語を対象としたテキストに対する検索を行う際の参考になりましたら幸いです。また、Omeka Sのモジュール開発の参考にもなりましたら幸いです。

Discussion