From yama @ scaleout.jp Fri Oct 23 21:53:13 2009 From: yama @ scaleout.jp (Daisuke Yamazaki) Date: Fri, 23 Oct 2009 21:53:13 +0900 Subject: [Ludia-users 243] =?iso-2022-jp?b?GyRCOCE6d08zJGwkLCQiJGs6XSRORDQ6Okp9SyEkSyREGyhC?= =?iso-2022-jp?b?GyRCJCQkRhsoQg==?= Message-ID: <20091023211350.0682.54899710@scaleout.jp> 株式会社スケールアウト 山崎と申します. Ludiaを使ったシステムを構築しているのですが,検索に対して漏れが あるようで調査をしております. データなどの再現方法を表に出せないため,検索漏れがある際の調査方法を 模索しております.さらに詳細な調査を行う方法やヒントがあれば教えて もらえると幸いです. 下記本現象が起きる環境と http://sourceforge.jp/projects/ludia/lists/archive/users/2008-March /000190.html 始まるスレッドを参考に試行錯誤した内容になります. 0. 環境 CentOS release 5.2(x86_64) PostgreSQL 8.2.11 ludia 1.5.1(pgs2version()より) senna 1.1.4 (pgs2seninfo()より) インデックスの作成方法 fulltextb() CREATE INDEX idx_senna_items_name ON items USING fulltextb((name::text)); 1. クエリ内容 SELECT * FROM "items" WHERE (items.name @@ E'"xxx"') ; xxxは3文字の日本語でUTF-8になります. 2. クエリ結果 一部返ってきて欲しいレコードが返ってきません. 69件返ってきて欲しいところ 57件 3. REINDEXをテーブル,DBともに行った結果 複数回行いましたが,変わりませんでした. 4. DROP INDEX, CREATE INDEXを行った結果. DROP indexを行った場合,クエリは正しく返ってきました.ただこれは インデックスがないことによるシーケンシャルスキャンの結果だと思われます. またCREATE INDEXをやり直しても結果は同じでした. こちらも複数回行いました. 5. データベースの再作成 vacuumがらみの可能性を排除したかったので,dropdbを行い, DBを再作成しました.こちらも結果は同じでした. 以上,よろしくお願いします. -- 株式会社 スケールアウト 代表取締役社長 山崎大輔 Daisuke Yamazaki Blog:最速配信研究会 http://d.hatena.ne.jp/yamaz/ From yama @ scaleout.jp Sat Oct 24 23:25:20 2009 From: yama @ scaleout.jp (Daisuke Yamazaki) Date: Sat, 24 Oct 2009 23:25:20 +0900 Subject: [Ludia-users 244] Re: =?iso-2022-jp?b?GyRCOCE6d08zJGwkLCQiJGs6XSRORDQ6Okp9SyEbKEI=?= =?iso-2022-jp?b?GyRCJEskRCQkJEYbKEI=?= In-Reply-To: <20091023211350.0682.54899710@scaleout.jp> References: <20091023211350.0682.54899710@scaleout.jp> Message-ID: <20091024230924.E01C.54899710@scaleout.jp> スケールアウト 山崎です. さらに調査を進めたところ,インデックス作成のフラグとして SEN_INDEX_NORMALIZEを指定していると漏れが起きることがわか りました(fulltextbはSEN_INDEX_NORMALIZEのフラグが立っている). SEN_INDEX_NORMALIZEに関するドキュメントはLudiaとSennaで 微妙に違っているのですが,実際の正規化はどうなっていると 考えればいいでしょうか?確かに検索漏れが起きているのは カタカナでの検索でした. Ludia側 「英文字、数字、カタカナ、記号などは全角文字/半角文字の正規化を行い、 英文字に関しては大文字/小文字を正規化した後、インデックスに登録する。」 http://ludia.sourceforge.jp/cgi-bin/moin.cgi/LudiaReadme#id19 Senna側 「英文字の大文字/小文字、全角文字/半角文字を正規化してインデックスに 登録する」 http://qwik.jp/senna/APIJ.html 以上,引き続きよろしくお願いします. On Fri, 23 Oct 2009 21:53:13 +0900 Daisuke Yamazaki wrote: > 株式会社スケールアウト 山崎と申します. > > Ludiaを使ったシステムを構築しているのですが,検索に対して漏れが > あるようで調査をしております. > > データなどの再現方法を表に出せないため,検索漏れがある際の調査方法を > 模索しております.さらに詳細な調査を行う方法やヒントがあれば教えて > もらえると幸いです. > > 下記本現象が起きる環境と > http://sourceforge.jp/projects/ludia/lists/archive/users/2008-March > /000190.html > 始まるスレッドを参考に試行錯誤した内容になります. > > 0. 環境 > CentOS release 5.2(x86_64) > PostgreSQL 8.2.11 > ludia 1.5.1(pgs2version()より) > senna 1.1.4 (pgs2seninfo()より) > インデックスの作成方法 fulltextb() > CREATE INDEX idx_senna_items_name ON items USING fulltextb((name::text)); > > > 1. クエリ内容 > SELECT * FROM "items" WHERE (items.name @@ E'"xxx"') ; > xxxは3文字の日本語でUTF-8になります. > > 2. クエリ結果 > 一部返ってきて欲しいレコードが返ってきません. > 69件返ってきて欲しいところ 57件 > > 3. REINDEXをテーブル,DBともに行った結果 > 複数回行いましたが,変わりませんでした. > > 4. DROP INDEX, CREATE INDEXを行った結果. > DROP indexを行った場合,クエリは正しく返ってきました.ただこれは > インデックスがないことによるシーケンシャルスキャンの結果だと思われます. > またCREATE INDEXをやり直しても結果は同じでした. > こちらも複数回行いました. > > 5. データベースの再作成 > vacuumがらみの可能性を排除したかったので,dropdbを行い, > DBを再作成しました.こちらも結果は同じでした. > > 以上,よろしくお願いします. > -- > 株式会社 スケールアウト > 代表取締役社長 山崎大輔 Daisuke Yamazaki > Blog:最速配信研究会 > http://d.hatena.ne.jp/yamaz/ -- 株式会社 スケールアウト 代表取締役社長 山崎大輔 Daisuke Yamazaki Blog:最速配信研究会 http://d.hatena.ne.jp/yamaz/