はじめに
Flutter 向け NoSQL データベース Isar を利用する過程で、検索文章の区切りが半角空白しか対応していないで日本語は1文字単位区切りになってしまうと知る。
それでは意図する対象以上にマッチしてしまうので不都合!そこで MeCab を利用できるか調査した
調査段階
https://github.com/dttvn0010/mecab_dart
こちらで目的のものが提供されている
Flutter 対応で、日本語文章を単語、熟語など適切に区切っていい感じにしてくれることはわかった
開発環境
Windows 11
Flutter 3
実装手順
プロジェクトに組み込み、紹介されているデモを動かしてみる
手順は、上記サイトに詳細説明があるのでそれを読み解いていく
- ライブラリ本体をインストール
pubspec.yaml
dependencies:
mecab_dart: 0.1.6
- MeCab IPADIC 辞書を組み込み
以後の手順も考え上のサイトの ZIP ダウンロードをする
mecab_dart-master.zip を展開して、
mecab_dart-master\example\assets\ipadic フォルダ内容を丸ごと
プロジェクト/assets/ipadic フォルダへコピー
そのフォルダを参照できるように assets に設定する
pubspec.yaml
assets:
- assets/ipadic/
- Windows 向けに追加作業
mecab_dart-master\example\blobs フォルダを
プロジェクトフォルダへコピーする
プロジェクト/blobs
ファイルは、libmecab.dll 1つしかない
さらに、
プロジェクトフォルダ/windows/CMakeLists.txt を編集
ファイルを開いて、末尾に追記
CMakeLists.txt
install(
FILES ${PROJECT_BUILD_DIR}/../blobs/libmecab.dll
DESTINATION ${INSTALL_BUNDLE_DATA_DIR}/../blobs/
)
ここまででインストール作業は完了!
ビルド実行してみる
ビルド実行でエラーが出る場合、build フォルダを削除して再実行してみる
(後に知るのだが、毎回リビルドする場合、build フォルダを削除する必要があり面倒)
使い方
https://pub.dev/packages/mecab_dart/example
のサンプルコードを実行してみると
このようになり、動作内容を確認できた
まとめ
使えるようにできたが、そこから全文検索に展開する方法がわからず、MeCab は使わないことになった
思ったより、手間がかかり、パッケージの管理も終えた感じも見えて、この先使わないと思う
それでも手間がかかったのでまた同じ手間をしないようにメモしておく