プロジェクト

全般

プロフィール

プラグインDMSFの検索エンジンをHyper Estraierへ替える » 履歴 » バージョン 6

Masanori Machii, 2011/10/21 16:13

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