はじめに

Omeka-Sは強力なデジタルアーカイブシステムですが、デフォルトでは日本語の全文検索がほとんど機能しません 。本記事では、MroongaSearchモジュールを導入することで、日本語全文検索を実現する方法を解説します。

重要:なぜMroongaSearchモジュールが必要なのか

Omeka-Sの標準検索の問題点

Omeka-Sの標準フルテキスト検索(FullTextSearchモジュール)は、InnoDBエンジンを使用しており、以下の致命的な問題があります:

日本語単語検索の例

:::

InnoDBのフルテキスト検索は英語のようなスペース区切り言語を前提としているため、日本語では:

  • 単語検索が不可能 : 文字列全体が1つの単語として扱われる
  • 部分一致も機能しない : FULLTEXTインデックスが日本語を正しく処理できない
  • 検索結果がゼロ : ユーザーは何も見つけられない

MroongaSearchモジュールの解決策

MroongaSearchモジュール は、この問題を2段階で解決します:

1. フォールバック機能(モジュール導入直後から有効)

重要 : MroongaSearchモジュールをインストールするだけで、特別な設定なし で日本語検索が動作するようになります。

MMrr::ooooLnnIggKaaESSee'aa%rrcchh%'Mroonga

MroongaSearchモジュールのフォールバック機能

  • CJK(日本語・中国語・韓国語)の単一語検索を自動検出
  • LIKE '%term%' 検索に自動的にフォールバック
  • Mroongaが設定されていなくても動作する
  • これがないと、日本語全文検索がそもそもうまくいかない

2. Mroonga+TokenMecabによる高速・高精度検索(推奨)

さらに、MariaDBにMroongaプラグインを設定すると:

  • ✅ 形態素解析による精密な単語検索
  • ✅ 高速な全文検索(LIKEの数百倍高速)
  • ✅ AND/OR検索の厳密な制御

MroongaSearchモジュールとは

MroongaSearchは、Omeka-S用の全文検索強化モジュールです。

主な機能

  1. 自動フォールバック機能

    • Mroonga未設定でもCJK検索を可能に
    • LIKE検索への自動切り替え
    • 設定不要で即座に利用可能
  2. Mroonga連携機能

    • 形態素解析による精密検索
    • TokenMecabサポート
    • 高速インデックス検索
  3. 診断ページ

    • プラグイン状態の確認
    • テーブルエンジンの表示
    • トークナイザー情報
    • 手動エンジン切り替え
  4. 厳密なAND/OR検索

    • 標準のFullTextSearchより精密な検索ロジック

開発者

  • Kentaro Fukuchi (初期版)
  • Kazufumi Fukuda (機能拡張)
  • Toshihito Waki (現メンテナー)

セットアップ手順

ステップ1: MroongaSearchモジュールのインストール

cgdit/pcaltohn/etoh/totmpesk:a/-/sg/imtohduubl.ecsom/wakitosh/MroongaSearch.git

Omeka-S管理画面からモジュールを有効化します。

これだけで日本語検索が動作するようになります! (LIKE検索のフォールバック)

ステップ2: Mroonga環境の構築(推奨)

より高速・高精度な検索のため、MariaDBにMroongaプラグインを設定します。

Docker環境の場合

ディレクトリ構成

omekaDdm-ooasccr-kkideeaDiorrdoncf-bcikicktele.remrs/pfqoilslee.yml

mariadb/Dockerfile

F#R#RRUUOINENMnnsaamgmmaraemtppareepmbcaattrocctlhrl--ioaa--eoilgganbbgraeedg-efM"dMttba\itrpbr--pol:ouiptacvoulopnlodlangandsukiergitgatgeca/aneatain-nl_selniuipltpl-zt&blol&mef&/uau&-rr8agdgyo-\pi_iom&tnanne&/dgclodaaa\innbs=dtssthM/aae*r_Ctmaurbpoofnogra"Japan/eestec/tmoykseqnli/zmaatriioandb.conf.d/50-server.cnf

mariadb/init.sql

ICCCNRRRSEEEITIAAAnAnTTTsLsEEEtLtaaFFFlSlUUUlOlNNNNCCCMAMTTTrMrIIIoEoOOOooNNNn'nghgIIIaaaFFF_pmUNNNlrDOOOuoFTTTgoinfEEEnguXXXanIIIa'cSSSn;tTTTdiSSSoUnmmmDsrrrFoooooofnnnugggnaaac___tsceinosoimcnpmaspapenetdRHRETETMTULURRNSNSOSNSASTMTRERIIN'NGhGaS_SOmONrNAoAMoMEnEg'a'h.hasa_o_m'mr;roooonnggaa..ssoo'';;

docker-compose.yml (mariadbセクション):

sermvairbreciueoneaicdsl-vMMMMsdlootuiYYYY:bdncammrSSSS::tkrea/oQQQQeetsrmnLLLLxr::iam____tfareRDUP:iadinOASAllbatOTESew:d:TARS/:a/b_B:Wmyv/PAOaDsaiASoRrornSEmDic/iS:e:akltWkdei.OoaobrbsRmmf/qDeeiml:kkly:aaes/yqdoloucrk_epra-sesnwtorrydpoint-initdb.d/init.sql

コンテナの再構築

dddoooccckkkeeerrrcccooommmpppooossseeedbuoupwinl-ddmariadb

ステップ3: セットアップの検証

1. Mroongaプラグインの確認

doc-keer"SeHxOeWcP<LcUoGnItNaSi"ne|r-gnraempe>-imamrrioaodnbga-uroot-p<password>

期待される出力

MroongaACTIVESTORAGEENGINEha_mroonga.soGPL

2. TokenMecabの確認

MMrr::ooooLnnIggKaaESSee'aa%rrcchh%'Mroonga

0

期待される出力 (抜粋):

MMrr::ooooLnnIggKaaESSee'aa%rrcchh%'Mroonga

1

TokenMecabが含まれていればOK

3. MroongaSearch診断ページの確認

Omeka-S管理画面で:

MMrr::ooooLnnIggKaaESSee'aa%rrcchh%'Mroonga

2

表示内容:

  • Plugin status : ACTIVE / NOT ACTIVE
  • Table engine : InnoDB / Mroonga
  • Tokenizer : TokenMecab / なし
  • Mroonga effective : YES / NO

「Mroonga effective: NO」の場合

  • プラグインはACTIVEだが、テーブルエンジンがInnoDBのまま
  • フォールバック検索(LIKE)が使用される
  • 動作はするが、速度は遅い

「Mroonga effective: YES」にするには

  • 診断ページから手動でエンジンをMroongaに切り替え

  • または、SQLで直接変更:
MMrr::ooooLnnIggKaaESSee'aa%rrcchh%'Mroonga

3

4. 再インデックス

診断ページまたはOmeka-S管理画面から再インデックスを実行します。

検索動作の仕組み

Mroonga未設定時(フォールバック)

MMrr::ooooLnnIggKaaESSee'aa%rrcchh%'Mroonga

4

Mroonga+TokenMecab設定時

MMrr::ooooLnnIggKaaESSee'aa%rrcchh%'Mroonga

5

部分文字列検索も機能する

Mroongaは形態素解析だけでなく、部分文字列検索 もサポート:

MMrr::ooooLnnIggKaaESSee'aa%rrcchh%'Mroonga

6

これにより、ユーザーが正確な単語を知らない場合でも結果を得られます。

TokenMecabによる形態素解析

形態素解析とは

日本語には英語のようなスペース区切りがないため、文を単語に分割する必要があります。

MMrr::ooooLnnIggKaaESSee'aa%rrcchh%'Mroonga

7

これにより、「東京」や「大学」といった単語単位での検索が可能になります。

形態素解析の限界

TokenMecabは強力ですが、以下のケースでは期待通りに動作しない場合があります:

1. 固有名詞(辞書にない新語)

MMrr::ooooLnnIggKaaESSee'aa%rrcchh%'Mroonga

8

2. 複合語・専門用語

MMrr::ooooLnnIggKaaESSee'aa%rrcchh%'Mroonga

9

3. 造語・新語

cgdit/pcaltohn/etoh/totmpesk:a/-/sg/imtohduubl.ecsom/wakitosh/MroongaSearch.git

0

4. 複数の分割パターン

cgdit/pcaltohn/etoh/totmpesk:a/-/sg/imtohduubl.ecsom/wakitosh/MroongaSearch.git

1

解決策

  • ユーザー辞書 : カスタム単語をMeCab辞書に追加
  • TokenBigram併用 : 2文字N-gramで部分一致を補完
  • フォールバック : MroongaSearchが自動的にLIKE検索も併用

利用可能なトークナイザー

トークナイザー説明用途
TokenMecab形態素解析日本語検索(推奨)
TokenBigram2文字ずつ分割部分一致重視
TokenUnigram1文字ずつ分割完全一致のみ
TokenDelimit区切り文字で分割英語など

パフォーマンス比較

LIKE検索(フォールバック)

cgdit/pcaltohn/etoh/totmpesk:a/-/sg/imtohduubl.ecsom/wakitosh/MroongaSearch.git

2

  • ⚠️ 全行スキャン
  • ⚠️ データ量に比例して遅延
  • ✅ ただし、検索結果は返る(モジュールなしではゼロ)

Mroonga全文検索

cgdit/pcaltohn/etoh/totmpesk:a/-/sg/imtohduubl.ecsom/wakitosh/MroongaSearch.git

3

  • ✅ インデックス使用
  • ✅ 高速検索(LIKEの数百倍)
  • ✅ スケーラブル

まとめ

MroongaSearchモジュールの重要性

  1. 必須 : Omeka-Sで日本語全文検索を行うにはMroongaSearchモジュールが必須
  2. 即効性 : インストール直後からフォールバック機能で検索可能
  3. 段階的改善 : Mroonga設定で更に高速化

推奨セットアップ

レベル設定検索動作パフォーマンス
最低限MroongaSearchモジュールのみLIKE検索フォールバック⚠️ 遅い(でも動く)
推奨MroongaSearchモジュール
+ Mroonga
+ TokenMecab形態素解析検索✅ 高速

導入効果

  1. 日本語検索が可能に : フォールバックにより即座に動作
  2. 精度の向上 : TokenMecabによる単語単位の検索
  3. 高速化 : Groongaエンジンによる最適化
  4. 柔軟性 : 形態素検索と部分一致の両立

結論 : Omeka-Sで日本語コンテンツを扱う場合、MroongaSearchモジュールは必須 です。

参考リンク

検証環境

  • Omeka-S: 4.1.1
  • MroongaSearch: latest
  • MariaDB: latest (11.x)
  • Docker Compose
  • macOS (Darwin 24.6.0)

この記事が役に立ちましたら、GitHubリポジトリにスターをお願いします!