トップページ»3.4.製品»Ludiaの配列型インデックスでの問題

3.4.製品



Ludiaの配列型インデックスでの問題

Ludia1.5.2で配列型インデックスを仕込んだテーブルがあって、3つのカラムに重みをつけて検索させようとしてるんだけど、Insert直後にselectするとちゃんとスコアがついてくるのに、このテーブルに対してupdateすると対象のレコードのスコアが0になってしまう問題にぶち当たってます。

プログラムの中でこのテーブルに対してinsertとupdateを連続的に行う処理をさせているので、一見全くスコアがつかないように錯覚してたんですが、実はupdate後に現象が出ることに気づきました。 ものすっごく時間がかかった。

更に色々調べてみると、どうやらintegerのカラムをupdateすると現象が出るっぽい。 しかし、updateの際、他のvarcharとかtextとかtimestampとかのカラムに、「元の値とは異なるデータ」をセットして、一緒にupdateするとスコアは戻る。

結構困ってます。 ダミーとして何かセットするかしないと解決しなそう。 これってバグなんだろうか。

ここに書くのもどうかと思うが、ludia開発停滞してるっぽいし、しかしかなり作りこんでしまったので他に乗り換える事は難しいし、なにより納期がかなり迫ってるし。

むー。




2010-04-18追記

ようやく問題が絞り込まれてきました。 integerだけじゃなく他の型をupdateしても現象が再現するケースもあるようです。 嘘書いてました。(汗)

現時点でわかってきたこと。

対象のテーブルには時刻型、厳密に言うとtimestamp(0)のカラムがあって、updateの際にここの値を「元の値とは違うものに置き換え」ればスコアが戻ってくるようです。 複数timestamp型カラムがある場合はそのいずれかを置き換えればよさそう。

なぜ時刻型カラムの更新がLudia配列型インデックスのスコアに影響するのかはわかりませんが、とりあえず突破口は見えてきました。 気持ち悪いけど、この性質を利用してこの問題を切り抜けようと思います。


投稿日 : 2010年4月17日

この記事に関する言及

このエントリーのトラックバックURL:
http://akionweb.com/mt-tb.cgi/496

コメント

このページに対する感想、意見をお寄せ下さい。




保存しますか?

(書式を変更するような一部のHTMLタグを使うことができます)

おことわり

当サイトに掲載している全ての情報は、全て当サイト管理者が個人的、実験的に試した事、又は独自に調査したものです。 従ってその情報に誤りがある可能性も多分にあります。 当サイトの情報をそのまま鵜呑みにされませんようお願い申し上げます。 また当サイトの情報を元に作業されたりする場合はそれをご理解頂いた上で、あくまで自己責任の元で行ってください。

トップページ»3.4.製品»Ludiaの配列型インデックスでの問題