KnowledgeTreeの最近のブログ記事

とりあえずプラグインが完成したので、ボチボチ解説していく。ソースはSubversionのリポジトリからどうぞ。
http://kazu.tv/svn/docdiff/trunk/

DocumentDiffActionには重要なメソッドが2つある。

  • do_main
  • do_viewComparison
文書を選択して、画面右のDiffをクリックした時に呼ばれるのが前者で、差分を取りたいバージョンをクリックした時に呼ばれるのが後者。

まずはdo_mainから。

本当は解説をもう少し書くつもりだったけど、その前にプラグインが完成してしまった。まぁとりあえず動くレベルだけど。

プラグインの機能は現在のバージョンと過去のバージョンの差分を取るというもの。

ダウンロードは↓から。
docdiff.zip

たいした内容ではないけど、プラグインの解説も時間があるときに書いていく予定。

追記
最新版は以下のSubversionレポジトリに。
http://kazu.tv/svn/docdiff/trunk/

引き続きKnowledgeTreeのプラグインを作ってる。

PHPでプログラミングをしてると、PEARPECLのライブラリを使いたくなる事があるけど、ちょっとだけファイルの修正が必要だった。

KnowledgeTreeはPHPやMySQLなど、必要なのは全てパッケージに含まれていて、PHPはデフォルトだと/opt/ktdms/php以下にインストールされる。で、試しにPECLを実行してみると以下のようなエラーが出る。PEARも同様。

# /opt/ktdms/php/bin/pecl 
/opt/ktdms/php/bin/pecl: line 28: /bitrock/knowledgetree/linux/build/output/php/bin/php: No such file or directory
/opt/ktdms/php/bin/pecl: line 28: exec: /bitrock/knowledgetree/linux/build/output/php/bin/php: cannot execute: No such file or directory

どうやらPHPをビルドした環境のパスが使われているらしい。

修正すべきファイルは以下の3つ

  • /opt/ktdms/php/bin/pecl
  • /opt/ktdms/php/lib/php/pearcmd.php
  • /opt/ktdms/php/lib/php/peclcmd.php

最近KnowledgeTreeのプラグインを書いてるので、ソースコードを色々追っている。今回はインデックス生成の話。

KnowledgeTreeはご存じの通り全文検索が出来るのだが、その仕組みを大雑把に書くと

  1. Word、PDF等の異なる形式の文書からテキスト要素だけ抜き出し
  2. 抜き出したテキストに対してインデックスを生成

1.を行うのがExtractorと呼ばれるクラス。

/opt/ktdms/knowledgeTree/search2/indexing/extractorCore.inc.phpにDocumentExtractorという抽象クラスが定義されており、その孫クラスあたりにWordExtractor,PDFExtractorなどがある。それらの実体は/opt/ktdms/knowledgeTree/search2/indexing/extractorsの下にある。

各extractorはcatdocなどの外部コマンドを呼び出して、ファイルからテキスト情報を抽出しているらしい。

さて、それらのクラスがどうやって呼び出されるんだろう?と疑問に思ってたんだけど、mime_typesとmime_extractorsという2つのテーブルを発見。後者に先ほどのExtractorの情報が格納されていて、前者にはmime typeの一覧と、各Mime typeに対応するExtractorの情報が入ってる。

インデックス生成の仕組みについてはもう少し調べてから、もう少し詳しい説明を書こうと思う。

KnowledgeTree 3.5.4aでのバグ。

文書をダウンロードしようとするとエラーが。以下のエラーが。
For more information on the error click here:の横の!マークをクリックすると以下の詳細なメッセージが。

Fatal error: Class 'KTOnDiskHashedStorageManager' not found in /opt/ktdms/knowledgeTree/lib/storage/storagemanager.inc.php on line 194

本家フォーラムの書き込みに解決策あり。

/opt/ktdms/knowledgeTree/lib/storage/storagemanager.inc.php(Linux版の場合)の先頭の方に以下の行を付け加えればよい。

require_once(KT_DIR . '/lib/storage/ondiskhashedstoragemanager.inc.php');

引き続きボチボチやってる。

プラグイン作成とかで難しいのは、そのプラットフォームの仕組みを理解する事。いったん仕組みが分かっちゃえば後は普通のプログラミング。KnowledgeTree (KT)の場合はPHP。

今回はプラグインに関連するテーブルの簡単な解説。

最近KnowledgeTree関連の動きが活発な気がする。

こないだ紹介したブログ、実は知り合いのブログだった事が判明w

しかもその彼が日本語フォーラムを立ち上げた。とりあえず自分も情報提供をしていこうかなぁと思う。

最近KnowledgeTreeというドキュメント管理システムを触り始めてるってのは最近のエントリで書いたが、昨日のCNETの記事で、KnowledgeTreeの日本語サポートが始まったらしい。

で、KnowledgeTreeの日本語ページも出来ていたが、かなりしょぼい...機械翻訳ではないと思うけど、日本語を勉強しているアメリカ人学生がアルバイトで翻訳したとかそんな感じ?

あなたのビジネスにシンプルで使いやすい文書管理のソリュージョン管理の悪
(原文ママ)

悪って何なんだよ...

日本語サポートはexxaxonとかいう会社がやっているらしい。

KnowledgeTreeを触り始めた。バージョン間の差分が取れればいいなぁと思ってプラグインを書いてみる事にした。

その後気づいたけど、同様の機能は有償版には含まれているらしいね。ただ、KnowledgeTreeの日本語の情報って少ないし、プラグインの情報なんてもっと少ないので、せっかくだし勉強がてらプラグインを書いてその情報を載っけていこうかと。これからプラグイン書こうという人の参考になればいいかな。

今回作るのは「Action」というもの。プラグインには色んな種類があるけど(英語だけどこの辺を参考に)、Actionは文書やフォルダに対する何らかの処理を行うもの。文書を選択すると右の方のメニューで「Archive」とか「Copy」とかが表示されているけど、それらがAction。

Actionの作り方は同じく英語ページのここに載ってるんだけど、正直言ってこれだけじゃよく分からなくて、既存のプラグインのソースを見ながら見よう見まねで作り始めた。

とりあえず2つクラスを作る必要がある必要らしい。

  • KTPluginクラスの子クラス
  • KTDocumentActionクラスの子クラス

KnowledgeTree

| コメント(0) | トラックバック(0)

文書管理をしたくていろんなのを試してる。今回はKnowledgeTreeを触ってみた。

とりあえずLinuxのパッケージをインストールして、日本語言語ファイルみたいなのを入れたら普通に使えた。日本語での検索も出来るのでいい感じ。

現状の問題点


  • バージョン間の差分が取れない(プラグインとかある?)

  • 日本語ファイル名が化けた時があった(再現テスト中)

  • それと関連するかもしれないけど、こんな問題が本家のBTSにあった

このブログの作者

名前:kazu
仕事:IT関係の何でも屋
メール:kazu 後幕 kazu どと tv
詳しくはこの辺

このアーカイブについて

このページには、過去に書かれたブログ記事のうちKnowledgeTreeカテゴリに属しているものが含まれています。

次のカテゴリはLinux, UNIXです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ