これは何?
「BaseX」は非常に優れたXMLデータベースで、公式サイトのアナウンスによれば、 近々発表される W3C XQuery 3.0 Recommendation の機能をすでに提供しており、また、W3C XQuery Full Text 1.0 および、Update Facility Extensions の機能を完全に実装しています。 国際化の対応についても、格納するXML文書についてはもちろんのこと、インターフェースにおいても、サーバが返すメッセージやGUIツールのメニューなど、ほとんどの部分が各国語対応されていますが、 残念なことに、XQuery Full Text における字句解析機能は英語とドイツ語にしか対応していません。
このプログラムは、日本語形態素解析による単語の切り出しが可能になるように、「Igo - Java形態素解析器」を利用して、BaseXの全文検索機能を拡張したものです。
前準備
(1) 必要なものを用意する
- BaseX-ja(このプログラム)
- Igo
- mecab-ipadic
(2) 日本語辞書を生成する
Igo の BuildDic コマンドを使って、日本語辞書を生成します。
$ java -cp igo-0.4.2.jar net.reduls.igo.bin.BuildDic ipadic mecab-ipadic-2.7.0-20070801 EUC-JP
※詳細についてはIgoの公式サイトをご確認ください。
(3) 日本語辞書を配置する
生成された ipadic/ をホームディレクトリ(System.getProperty("user.dir") で示される場所)にコピーします。
$ cp -R ipadic /home/user-name
BaseX-jaは、まずクラスパス内で辞書をサーチし、もしなければホームディレクトリにあるものと見なします。
使ってみる
BaseXそのものの使い方やAPIについては、こちらをご覧いただくとして、 ここでは、手っ取り早く日本語全文検索機能を体験していただくために、BaseXGUI を使った一連の手順についてご紹介いたします。
(1) 日本語で記述された整形式のXML文書を用意します
(2) BaseXGUIの起動
$ java -Dfile.encoding=utf-8 -cp igo-0.4.2.jar;BaseX-ja.jar org.basex.BaseXGUI
(3) データベースを作成します
- BaseXGUI のメニューから[データベース]→[新規...]
- 一般タブの「XML文書の保存」に用意した日本語XMLファイルを指定
- 「データベースの名前」に任意の名前を指定
- 全文タブの「全文インデックス」をチェック
- 「言語」をチェックして、Japanese を選択
- [OK]ボタンを押す
(4) XQuery Full Text を試してみる
//* [text() contains text '単語']
注意点など
(1) 日本語特有の問題
BaseX-ja では、半角英数と全角英数は同一のものとして扱います
ひらがなとカタカナは区別されます
(2) 全文検索オプションについて
BaseX-ja では、現在のところ、英文に関わる以下のものについて動作を確認しています。
リリースノート
2011.6.20 | Ver.6.3.3-1 | 初版公開 |
ライセンス
BSD License (本家に準じます)
詳しい内容については、ソースコードに同梱されている license.txt を参照ください。
なお、使用する辞書のライセンスに関しては、辞書配布元のそれに準じます。
連絡先
バグに関する報告などは、こちらからお願いします
なお、BaseX-ja の日本語関連拡張は、私が独自に行ったものですので、この部分に関する質問などをBaseX プロジェクトチームに対して行ったとしても彼らは一切これを関知していません。 また逆に、BaseX由来の動作に関する質問は、私の方ではあまり詳しく答えられません。 そのようなものについては、こちらから行うとよいでしょう。