DITA-OTで全文検索機能を備えたHTMLを生成する
以前、htmlsearchで検索にヒットしたキーワードをハイライト表示するで書いた、jQueryによる検索ヒットキーワードのハイライト表示を実装してみました。サンプルを下記で公開します。
jQueryを使ったハイライト表示の実装は、割と簡単にできたのですが、テストをしていてhtmlsearchのバグに気が付きました。htmlsearchのインデクサは、ドキュメントの中のワードを抽出して、それらのワードがどのトピックファイルに含まれているかを示すハッシュテーブルを生成します。searchフォルダの下にできた、
0.js 1.js a.js b.js
といったJavaScriptファイルが、そのハッシュテーブルのファイルです。
htmlsearchのインデクサにバグがあって、ハッシュテーブルのJavaScriptファイルに下記のようなコードが出力されることがあります。
w["""]= "10,16,18,20,21,22,26,27,28,30,31,35,39"; w[":\"]= "8,10,11,12,14,15,22,26";
これらの行は当然シンタックスエラーになるので、以降のハッシュテーブルは読み込まれません。バグを修正するには、Javaで書かれたhtmlsearchのインデクサを修正しなければいけません。
ワークアラウンドとして、インデクサが生成したハッシュテーブルを手作業で修正するという方法があります。Firefoxでエラーコンソールを開いておけば、上記のようなエラーの場所が特定できます。「エラーが出たらその行を削除する」という作業を繰り返せば、取りあえずhtmlsearchを正常に動かせるようになります。
DITA-OT1.4.3の頃に書いた、「DITA Open Toolkit活用ガイド」というドキュメントのDITAソース・ファイルと、HTMLへの変換サンプルを公開します。HTMLを参照するには、zipファイルを解凍してできたフォルダの中にある、frameset.html を開いてください。
全文検索を行うと、ヒットしたキーワードがピンク色にハイライト表示されます。
ハイライトを解除するには、[Go]ボタンの右隣にあるピンクのHをクリックします。
<変換に使用したDITA-OTのバージョン>
DITA-OT1.5.2M6のカスタマイズ版
<使用したプラグイン>
tocjs
tocjsbis
htmlsearch
<使用した形態素解析エンジン>
MeCab: 0.98
cmecab-java: v1.7
●DITA Open Toolkit活用ガイド DITAソース・ファイル: dita_ot_tips.zip
●検索ヒットキーワードのハイライト表示サンプル: xhtml_tocjsbis_srch.zip