プラグインDMSFの検索エンジンをHyper Estraierへ替える » 履歴 » リビジョン 6
リビジョン 5 (Masanori Machii, 2011/10/20 17:58) → リビジョン 6/10 (Masanori Machii, 2011/10/21 16:13)
h1. プラグインDMSFの検索エンジンをHyper Estraierへ替える h2. DMSFとRedmineの関係 DMSFはRedmineが標準で備える種々の文書管理を一つにまとめて置き換えようとしたものです.ユーザーインターフェイスは優れていますが,残念ながら検索エンジンにXapianを利用しており,そのままでは日本語に対応できません.そこで,Hyper Estraierへ置き換えるわけですが,改造はエンジンのみの置き換えで済むので,DMSFの基本的な構造は変わりません. その要点は次のとおりです. bq. 注)$REDMINEは自動的に設定される環境編ではありません.ここでは便宜的に使います. # {{fn(DMSFが管理する文書,ファイル名が同じであっても,インデックスは異なるよう,接頭辞が付いています.)}}はすべて $REDMINE/files/dnsf へ置かれる. # インデックスファイルを作成するプロセスが定期的に動作し,それは {{fn($REDMINE/files へ置かれる,これは管理者が設定できるのですが,わかりやすくするため,推奨としました.)}}. 【例】"whitemine" というディレクトリにRedmineがインストールされている場合 !ファイル保存フォルダ.png! !インデックスデータベース.png! これは,DMSFの設定画面にも現れています.またこの画面では,Xapianに由来する設定がありますが,それがHyper Estraierでは不要になります. !Xapianの設定.png! ここでは,オリジナルを(ちょっと手を抜いた)次の方針で改造することにします. # Web画面に "Xapian" 由来の設定などがあれば,それはそのままにし,削除しない. # Web画面に Estraier に対応するものがあれば,それは "Estraier" へと修正する.(現バージョンではない) # エラーメッセージなどに "Xapian" という文字列があれば,それは "Estraier" へと上書きする. # ソースコード中 "Xapian" を呼び出す部分は削除する.(ロジックの変更) # ソースコード中 "Xapian" という変数名がそのまま "Estraier" へと置き換えられる部分は "Estraier" へと修正する. # ソースコード中 "Xapian" というラベル名称はそのまま利用する. さて,変更するファイルは次の3つです. * config/locales/ja.yml * app/views/settings/_dmsf_settings.erb * app/models/dmsf_file.rb h2. config/locales/ja.ymlの修正 コード中のラベル "xapian_not_available" はそのままに,メッセージのみを修正しています. <pre> @@ -156,7 +156,7 @@ :error_file_storage_directory_does_not_exist: "ファイル保存フォルダが存在せず作ることもできません" :error_file_can_not_be_created: "ファイルを保存フォルダに作ることができません" :error_wrong_zip_encoding: "Zip エンコーディングが正しくありません" - :warning_xapian_not_available: "Xapian が利用できる状態になっていません" + :warning_xapian_not_available: "Hyper Estraier が利用できる状態になっていません" :menu_dmsf: "DMSF" :label_physical_file_delete: "物理ファイルの削除" :user_is_not_project_member: "あなたはプロジェクトのメンバーではありません" </pre> h2. app/views/settings/_dmsf_settings.erb ライブラリ名称を xapian から estraier に変更します.しかし,先の ya.yml に対応する警告のラベルは変えません. <pre> @@ -75,7 +75,7 @@ <hr /> <% begin - require 'xapian' + require 'estraier' xapian_disabled = false rescue LoadError %> <p class="warning"><%= l(:warning_xapian_not_available) %></p> </pre> h2. app/models/dmsf_file.rb 検索機能本体の修正をします.主な修正の要点は次のとおりです. XapianではなくてEstraier を呼び出します.呼び出し時のエラー処理はXapianと同様です. エラーや警告のメッセージは, Estraier のそれへと修正します. インデックスデータベースへのアクセスメソッドは,Xapianとは大幅に異なりますので,ざっくりと削除し,上書きします.