ドキュメントのインデックス生成

最近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の情報が入ってる。

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です