[Ludia-users 244] Re: 検索漏れがある際の調査方法について

Back to archive index

Daisuke Yamazaki yama****@scale*****
2009年 10月 24日 (土) 23:25:20 JST


スケールアウト 山崎です.

さらに調査を進めたところ,インデックス作成のフラグとして
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 <yama****@scale*****> 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 <yama****@scale*****>
> Blog:最速配信研究会
> http://d.hatena.ne.jp/yamaz/

--
株式会社 スケールアウト 
代表取締役社長 山崎大輔 Daisuke Yamazaki <yama****@scale*****>
Blog:最速配信研究会
http://d.hatena.ne.jp/yamaz/




Ludia-users メーリングリストの案内
Back to archive index