ドキュメントのインデックス生成
最近KnowledgeTreeのプラグインを書いてるので、ソースコードを色々追っている。今回はインデックス生成の話。
KnowledgeTreeはご存じの通り全文検索が出来るのだが、その仕組みを大雑把に書くと
- Word、PDF等の異なる形式の文書からテキスト要素だけ抜き出し
- 抜き出したテキストに対してインデックスを生成
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の情報が入ってる。
インデックス生成の仕組みについてはもう少し調べてから、もう少し詳しい説明を書こうと思う。