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 直