Tasuku SUENAGA
a****@razil*****
2006年 9月 20日 (水) 17:24:14 JST
末永です。 > ------------------------------------------------------------------------- > 1)fulltext index using senna, ngram, no normalize なカラム "body" を持 > つテーブル "articles" の作成 > > 2)作成したテーブルにデータを insert し、全文検索ができること・インデッ > クスが正常に生成されていることを確認 > > 3)alter table articles add で text カラム "" を "articles" に追加 > ------------------------------------------------------------------------- > > 上記を実行した後、再度(2)と同じ、検索クエリで検索を行うと検索結果が 0 > になっており、さらにインデックスを確認すると、NGRAM オプションが消え NORMALIZE > オプションが付与されたインデックスになっております。 http://qwik.jp/senna/knownproblems.html にある、 「MySQLバインディングにおいて、 alter table時にインデックス作成時のフラグが反映されない」 という不具合です。 MySQLはalter tableでフィールドを増やしたりする際、 全てのインデックスを作り直そうとします。 その際にパラメータが渡されないため、 デフォルトのインデックスを作成してしまいます。 その際、MeCabが入っていない環境ですと、 形態素解析に失敗し、空のインデックスが作成されてしまいます。 不具合だとは認識しているのですが、 回避するための工数がかかりそうなので、 修正は後回しになりそうです。 完全N-gramインデックスについてもそうですが、 Senna本体に手を入れることで回避は可能です。 誰かパッチを作ってくれないかなあ、と淡い期待をしていたりします。。