トップページ | 全エントリー一覧 | RSS購読

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
トラックバック
トラックバック送信先 :
コメント

HyperEstraierの.NETからの呼び出し

ファイルのテキストを抽出することができたので、次は全文検索エンジンのHyper Estraierを呼び出してみる。


使うのは、この2つ。
Hyper EstraierのWindows版のバイナリパッケージ(超迷子: 共同体的全文検索系)
Hyper Estraier Binding for .NET Framework(ぷろじぇくと、みすじら)


まず、Hyper Estraier(とそれに必要な諸々)のインストール。
といっても、特にすることはなく、パッケージを好きなフォルダに展開するだけ。
QDBMも全部入ってて便利。でも、MeCabが見当たらないな。

その次に、Hyper Estraier Binding for .NET Frameworkは、ただの.NETのクラスライブラリなので、
Visual Studioから参照設定で追加する。

追加してみたらこんな感じ。


HyperEstraier.dll(Hyper Estraier Binding for .NET Frameworkの方)用のファイル置き場を作らなかったので、なくさないよう、Visual Studioのプロジェクト内にファイルを置いておく。


そして、この記事のサンプルの通りに呼び出すコードを書いてみる。
全文検索エンジンHyperEstraierの.NETバインディングをC#から使う方法(床のトルストイ、ゲイとするとのこと)



この実行環境はASP.NETの動くWindows Server上のIISになる予定なので、それを見越していくつか試験している。

①P/InvokeでHyper EstraierのDLLを呼び出すために、DllImportで読み込んでくれるよう環境変数のPATHを一時的に設定している。
 アプリケーションに必要な情報は、アプリケーション内に集めたいのでOSの環境変数をいじりたくない。

②QDBMが作成するデータベースファイルは、パスを指定しない場合は、プロセスのエントリポイントを持つファイルのあるフォルダに作られる(?)ようで、
 ASP.NETだと、IISのC:\WINDOWS\system32\inetsrvの直下に作られるようで、(Windowsのバージョンによって違うかも)
 ここではバックアップを取ったりするのに不便なので、他のパスを指定した。
 親パスが存在しないとエラー吐いたけど・・・

③開いたQDBMをちゃんと閉じておかないと、データベースの状態が不正になって、次に読めなくなったので、
 IDisposeインターフェイスを実装してたクラスは全部usingでくくった。


これで実行すると、期待通りに動いてくれた!

あとは、APIの仕様を調べて、やりたい処理が実現できるよう組み立てるだけ。





でも、このWindows版のバイナリパッケージだとN-gram方式だけで、形態素解析をしてくれないみたい(?)なので、
MeCabを使いたかったら、ビルドし直す必要があるのかな?
スポンサーサイト
トラックバック
トラックバック送信先 :
コメント

プロフィール

とむころり

Author:とむころり
24時間システムエンジニア。研究開発など何でも屋を担当。知的でおもてなし精神に満ちたシステム(サービス)が作りたい。
@tomcat_ch

最新記事

最新コメント

最新トラックバック

月別アーカイブ

カテゴリ

検索フォーム

RSSリンクの表示

リンク

ブロとも申請フォーム

QRコード

QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。