はじめに
Omeka-Sは強力なデジタルアーカイブシステムですが、デフォルトでは日本語の全文検索がほとんど機能しません 。本記事では、MroongaSearchモジュールを導入することで、日本語全文検索を実現する方法を解説します。
重要:なぜMroongaSearchモジュールが必要なのか
Omeka-Sの標準検索の問題点
Omeka-Sの標準フルテキスト検索(FullTextSearchモジュール)は、InnoDBエンジンを使用しており、以下の致命的な問題があります:
日本語単語検索の例 :
InnoDBのフルテキスト検索は英語のようなスペース区切り言語を前提としているため、日本語では:
- 単語検索が不可能 : 文字列全体が1つの単語として扱われる
- 部分一致も機能しない : FULLTEXTインデックスが日本語を正しく処理できない
- 検索結果がゼロ : ユーザーは何も見つけられない
MroongaSearchモジュールの解決策
MroongaSearchモジュール は、この問題を2段階で解決します:
1. フォールバック機能(モジュール導入直後から有効)
重要 : MroongaSearchモジュールをインストールするだけで、特別な設定なし で日本語検索が動作するようになります。
MroongaSearchモジュールのフォールバック機能 :
- CJK(日本語・中国語・韓国語)の単一語検索を自動検出
LIKE '%term%'検索に自動的にフォールバック- Mroongaが設定されていなくても動作する
- これがないと、日本語全文検索がそもそもうまくいかない
2. Mroonga+TokenMecabによる高速・高精度検索(推奨)
さらに、MariaDBにMroongaプラグインを設定すると:
- ✅ 形態素解析による精密な単語検索
- ✅ 高速な全文検索(LIKEの数百倍高速)
- ✅ AND/OR検索の厳密な制御
MroongaSearchモジュールとは
MroongaSearchは、Omeka-S用の全文検索強化モジュールです。
主な機能
自動フォールバック機能
- Mroonga未設定でもCJK検索を可能に
- LIKE検索への自動切り替え
- 設定不要で即座に利用可能
Mroonga連携機能
- 形態素解析による精密検索
- TokenMecabサポート
- 高速インデックス検索
診断ページ
- プラグイン状態の確認
- テーブルエンジンの表示
- トークナイザー情報
- 手動エンジン切り替え
厳密なAND/OR検索
- 標準のFullTextSearchより精密な検索ロジック
開発者
- Kentaro Fukuchi (初期版)
- Kazufumi Fukuda (機能拡張)
- Toshihito Waki (現メンテナー)
セットアップ手順
ステップ1: MroongaSearchモジュールのインストール
Omeka-S管理画面からモジュールを有効化します。
これだけで日本語検索が動作するようになります! (LIKE検索のフォールバック)
ステップ2: Mroonga環境の構築(推奨)
より高速・高精度な検索のため、MariaDBにMroongaプラグインを設定します。
Docker環境の場合
ディレクトリ構成 :
mariadb/Dockerfile :
mariadb/init.sql :
docker-compose.yml (mariadbセクション):
コンテナの再構築 :
ステップ3: セットアップの検証
1. Mroongaプラグインの確認
期待される出力 :
2. TokenMecabの確認
0
期待される出力 (抜粋):
1
✅ TokenMecabが含まれていればOK
3. MroongaSearch診断ページの確認
Omeka-S管理画面で:
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で直接変更:
3
4. 再インデックス
診断ページまたはOmeka-S管理画面から再インデックスを実行します。

検索動作の仕組み
Mroonga未設定時(フォールバック)
4
Mroonga+TokenMecab設定時
5
部分文字列検索も機能する
Mroongaは形態素解析だけでなく、部分文字列検索 もサポート:
6
これにより、ユーザーが正確な単語を知らない場合でも結果を得られます。
TokenMecabによる形態素解析
形態素解析とは
日本語には英語のようなスペース区切りがないため、文を単語に分割する必要があります。
例 :
7
これにより、「東京」や「大学」といった単語単位での検索が可能になります。
形態素解析の限界
TokenMecabは強力ですが、以下のケースでは期待通りに動作しない場合があります:
1. 固有名詞(辞書にない新語)
8
2. 複合語・専門用語
9
3. 造語・新語
0
4. 複数の分割パターン
1
解決策
- ユーザー辞書 : カスタム単語をMeCab辞書に追加
- TokenBigram併用 : 2文字N-gramで部分一致を補完
- フォールバック : MroongaSearchが自動的にLIKE検索も併用
利用可能なトークナイザー
| トークナイザー | 説明 | 用途 |
|---|---|---|
| TokenMecab | 形態素解析 | 日本語検索(推奨) |
| TokenBigram | 2文字ずつ分割 | 部分一致重視 |
| TokenUnigram | 1文字ずつ分割 | 完全一致のみ |
| TokenDelimit | 区切り文字で分割 | 英語など |
パフォーマンス比較
LIKE検索(フォールバック)
2
- ⚠️ 全行スキャン
- ⚠️ データ量に比例して遅延
- ✅ ただし、検索結果は返る(モジュールなしではゼロ)
Mroonga全文検索
3
- ✅ インデックス使用
- ✅ 高速検索(LIKEの数百倍)
- ✅ スケーラブル
まとめ
MroongaSearchモジュールの重要性
- 必須 : Omeka-Sで日本語全文検索を行うにはMroongaSearchモジュールが必須
- 即効性 : インストール直後からフォールバック機能で検索可能
- 段階的改善 : Mroonga設定で更に高速化
推奨セットアップ
| レベル | 設定 | 検索動作 | パフォーマンス |
|---|---|---|---|
| 最低限 | MroongaSearchモジュールのみ | LIKE検索フォールバック | ⚠️ 遅い(でも動く) |
| 推奨 | MroongaSearchモジュール | ||
| + Mroonga | |||
| + TokenMecab | 形態素解析検索 | ✅ 高速 |
導入効果
- ✅ 日本語検索が可能に : フォールバックにより即座に動作
- ✅ 精度の向上 : TokenMecabによる単語単位の検索
- ✅ 高速化 : Groongaエンジンによる最適化
- ✅ 柔軟性 : 形態素検索と部分一致の両立
結論 : Omeka-Sで日本語コンテンツを扱う場合、MroongaSearchモジュールは必須 です。
参考リンク
検証環境
- Omeka-S: 4.1.1
- MroongaSearch: latest
- MariaDB: latest (11.x)
- Docker Compose
- macOS (Darwin 24.6.0)
この記事が役に立ちましたら、GitHubリポジトリにスターをお願いします!