Flutter で全文検索を実装する過程で MeCab 日本語形態素解析を触った記録

はじめに

Flutter 向け NoSQL データベース Isar を利用する過程で、検索文章の区切りが半角空白しか対応していないで日本語は1文字単位区切りになってしまうと知る。
それでは意図する対象以上にマッチしてしまうので不都合!そこで MeCab を利用できるか調査した

調査段階

https://github.com/dttvn0010/mecab_dart
こちらで目的のものが提供されている
Flutter 対応で、日本語文章を単語、熟語など適切に区切っていい感じにしてくれることはわかった

開発環境

Windows 11
Flutter 3

実装手順

プロジェクトに組み込み、紹介されているデモを動かしてみる
手順は、上記サイトに詳細説明があるのでそれを読み解いていく

  1. ライブラリ本体をインストール

pubspec.yaml

dependencies:
  mecab_dart: 0.1.6
  1. MeCab IPADIC 辞書を組み込み

以後の手順も考え上のサイトの ZIP ダウンロードをする

mecab_dart-master.zip を展開して、

mecab_dart-master\example\assets\ipadic フォルダ内容を丸ごと

プロジェクト/assets/ipadic フォルダへコピー

そのフォルダを参照できるように assets に設定する
pubspec.yaml

  assets:
    - assets/ipadic/
  1. 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
のサンプルコードを実行してみると

demo

このようになり、動作内容を確認できた

まとめ

使えるようにできたが、そこから全文検索に展開する方法がわからず、MeCab は使わないことになった
思ったより、手間がかかり、パッケージの管理も終えた感じも見えて、この先使わないと思う
それでも手間がかかったのでまた同じ手間をしないようにメモしておく

タイトルとURLをコピーしました