From kousakadi @ nttdata.co.jp Tue Apr 1 10:55:37 2008 From: kousakadi @ nttdata.co.jp (kousakadi @ nttdata.co.jp) Date: Tue, 1 Apr 2008 10:55:37 +0900 Subject: [Ludia-users 209] Re: =?iso-2022-jp?b?THVkaWExLjUuMBskQiRyJWolaiE8JTkkNyReJDcbKEI=?= =?iso-2022-jp?b?GyRCJD8bKEI=?= References: <3F764ED10646DC4496542563A6922D1B05E53B2F@MAILSV13.msg.nttdata.co.jp> <5d04aefa0803261614x45e8ff1clf382326a9d0a96ce@mail.gmail.com> Message-ID: <178CD7FD87EF4B4BB23F3D0B6C201D3F0594F161@MAILSV11.msg.nttdata.co.jp> 幸坂です。こんにちは。 ご指摘ありがとうございます。 > $prefix/share/postgresql にインストールされる > uninstall_pgsenna2.sql が @@ のままのように見えます。 その通りでした。 あまり良くないですね。 次のバージョンで修正します。 もし、LudiaをPostgreSQL8.3からアンインストールする場合は、 uninstall_pgsenna2.sqlを用いずにuninstall_pgsenna2_83.sqlを使用してくださ い。 > -----Original Message----- > From: ludia-users-bounces @ lists.sourceforge.jp > [mailto:ludia-users-bounces @ lists.sourceforge.jp] On Behalf Of ASARI > Takashi > Sent: Thursday, March 27, 2008 8:15 AM > To: ludia-users @ lists.sourceforge.jp > Subject: [Ludia-users 207] Re:Ludia1.5.0をリリースしました > > こんにちは。浅利といいます。 > > 新しいバージョンのリリース、おめでとうございます。 > 開発者の皆様、お疲れ様です。さっそく使ってみたいと思います。 > > 細かいことですが、 > > 08/03/25 に iwasakims @ nttdata.co.jp さんは書 > きました: > > - 演算子を@@から%%に変更。 > > pgsenna2.sql は %% に変更になっていますが、 > $prefix/share/postgresql にインストールされる > uninstall_pgsenna2.sql が @@ のままのように見えます。 > ソースのアーカイブには uninstall_pgsenna2_83.sql があるようですので、 > これはインストールスクリプトの関係でしょうか。 > > ともあれ、これで (REINDEX はしなければですが) 心置きなく > 8.3 に移行できますね。うれしい限りです。 > > -- > (株) RNAi > 浅利 尚志 > > _______________________________________________ > Ludia-users mailing list > Ludia-users @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/ludia-users From kousakadi @ nttdata.co.jp Tue Apr 1 11:22:31 2008 From: kousakadi @ nttdata.co.jp (kousakadi @ nttdata.co.jp) Date: Tue, 1 Apr 2008 11:22:31 +0900 Subject: [Ludia-users 210] Re: =?iso-2022-jp?b?GyRCO0VNTSRLJEQkJCRGJE48QUxkJCwkIiRqJF4bKEI=?= =?iso-2022-jp?b?GyRCJDkbKEI=?= References: <5d04aefa0801081749o3bfa18cvd6e0b3d35959965b@mail.gmail.com><178CD7FD87EF4B4BB23F3D0B6C201D3F048F78BB@MAILSV11.msg.nttdata.co.jp><5d04aefa0801081934t424aa799x35defaf46f109ae7@mail.gmail.com> <00b601c88eee$5bc38500$c6c8020a@vapor> Message-ID: <178CD7FD87EF4B4BB23F3D0B6C201D3F0594F18E@MAILSV11.msg.nttdata.co.jp> 幸坂です。こんにちは。 > 1.特殊文字の検索 ダブルクオーテーションを利用すれば、特殊文字も検索可能です。 また、エスケープ文字「\」を利用する方法もあります。 以下の投稿を参考にしてください。 http://lists.sourceforge.jp/mailman/archives/senna-dev/2008-January/000751.h tml > 2.単語(フレーズ)検索時の半角スペースの扱い 検索文字列の空白は全て無視されます。 単語間の空白は区切り文字として解釈されます。 △AB△で検索した場合は、空白無視となります。 A△Bで検索した場合は、READMEにあるように、 (Aで検索) OR (Bで検索)となります。 空白を検索したい場合は、ダブルクオーテーションを 利用して下さい。 > 3.@@→%% PostgreSQL8.3では、@@は"tsearch2専用"の演算子となり、 Ludiaとは関係ありません。 %%を利用してください。 一見それっぽく動いているのは、tsearch2が動いているからです。 > -----Original Message----- > From: ludia-users-bounces @ lists.sourceforge.jp > [mailto:ludia-users-bounces @ lists.sourceforge.jp] On Behalf Of ssenou > Sent: Wednesday, March 26, 2008 12:06 PM > To: ludia-users @ lists.sourceforge.jp > Subject: [Ludia-users 205]仕様についての質問があります > > 瀬能です。 > > 質問が3点あります > > 1.特殊文字の検索 > > (*,-,")等の記号を正規化に関わらず検索したい場合は > "(ダブルクォーテーション)で括り単語(フレーズ)検索として > 実行するという認識で正しいでしょうか? > > 2.単語(フレーズ)検索時の半角スペースの扱い > ※ △は半角スペース > DATA1:△AB > DATA2:AB△ > DATA3:A△B > DATA4:A△△B > > 検索文字列 △AB△ で検索した場合 > DATA1,DATA2がヒットする > 検索文字列 A△B で検索した場合 > DATA3,DATA4がヒットする > > 上記の事から前後の半角スペースは無視、又 > 半角スペースが1以上の場合も無視される > という認識で正しいでしょうか? > > 3.@@→%% > > 変更後、 @@でも実行は可能でしたが、 > @@では必ずシーケンシャルスキャンになってしまう様です。 > @@と%%は別物という認識で正しいですか? > > 以上よろしくお願いします。 > > ■環境 > Redhat Enterprise Linux 4 U6 > ludia 1.5.0 (mecab-0.97 ipadic-2.7.0 senna-1.1.2 > postgresql 8.3.0 > > _______________________________________________ > Ludia-users mailing list > Ludia-users @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/ludia-users From ssenou @ techno-mark.co.jp Tue Apr 1 14:04:44 2008 From: ssenou @ techno-mark.co.jp (ssenou) Date: Tue, 1 Apr 2008 14:04:44 +0900 Subject: [Ludia-users 211] Re: =?iso-2022-jp?b?GyRCO0VNTSRLJEQkJCRGJE48QUxkJCwkIiRqJF4bKEI=?= =?iso-2022-jp?b?GyRCJDkbKEI=?= References: <5d04aefa0801081749o3bfa18cvd6e0b3d35959965b@mail.gmail.com><178CD7FD87EF4B4BB23F3D0B6C201D3F048F78BB@MAILSV11.msg.nttdata.co.jp><5d04aefa0801081934t424aa799x35defaf46f109ae7@mail.gmail.com><00b601c88eee$5bc38500$c6c8020a@vapor> <178CD7FD87EF4B4BB23F3D0B6C201D3F0594F18E@MAILSV11.msg.nttdata.co.jp> Message-ID: <000c01c893b5$e9ffacb0$c6c8020a@vapor> 瀬能です。 回答ありがとうございます。 1.3については理解できたのですが 2についてまだ少し疑問があるので追加質問させて下さい。 2.単語(フレーズ)検索時の半角スペースの扱い >> 2.単語(フレーズ)検索時の半角スペースの扱い >> ※ △は半角スペース >> DATA1:△AB >> DATA2:AB△ >> DATA3:A△B >> DATA4:A△△B >> >> 検索文字列 △AB△ で検索した場合 >> DATA1,DATA2がヒットする >> 検索文字列 A△B で検索した場合 >> DATA3,DATA4がヒットする 上記の条件部分はフレーズ化しているので 検索文字列 "△AB△" で検索した場合 DATA1,DATA2がヒットする 検索文字列 "A△B" で検索した場合 DATA3,DATA4がヒットする 置き換えて実行しています。 説明が不足し申し訳ありません。 以上よろしくお願いします。 ----- Original Message ----- From: To: Sent: Tuesday, April 01, 2008 11:22 AM Subject: [Ludia-users 210] Re: 仕様についての質問があります > 幸坂です。こんにちは。 > > >> 1.特殊文字の検索 > ダブルクオーテーションを利用すれば、特殊文字も検索可能です。 > また、エスケープ文字「\」を利用する方法もあります。 > 以下の投稿を参考にしてください。 > http://lists.sourceforge.jp/mailman/archives/senna-dev/2008-January/000751.h > tml > >> 2.単語(フレーズ)検索時の半角スペースの扱い > 検索文字列の空白は全て無視されます。 > 単語間の空白は区切り文字として解釈されます。 > > △AB△で検索した場合は、空白無視となります。 > A△Bで検索した場合は、READMEにあるように、 > (Aで検索) OR (Bで検索)となります。 > > 空白を検索したい場合は、ダブルクオーテーションを > 利用して下さい。 > >> 3.@@→%% > PostgreSQL8.3では、@@は"tsearch2専用"の演算子となり、 > Ludiaとは関係ありません。 > %%を利用してください。 > 一見それっぽく動いているのは、tsearch2が動いているからです。 > >> -----Original Message----- >> From: ludia-users-bounces @ lists.sourceforge.jp >> [mailto:ludia-users-bounces @ lists.sourceforge.jp] On Behalf Of ssenou >> Sent: Wednesday, March 26, 2008 12:06 PM >> To: ludia-users @ lists.sourceforge.jp >> Subject: [Ludia-users 205]仕様についての質問があります >> >> 瀬能です。 >> >> 質問が3点あります >> >> 1.特殊文字の検索 >> >> (*,-,")等の記号を正規化に関わらず検索したい場合は >> "(ダブルクォーテーション)で括り単語(フレーズ)検索として >> 実行するという認識で正しいでしょうか? >> >> 2.単語(フレーズ)検索時の半角スペースの扱い >> ※ △は半角スペース >> DATA1:△AB >> DATA2:AB△ >> DATA3:A△B >> DATA4:A△△B >> >> 検索文字列 △AB△ で検索した場合 >> DATA1,DATA2がヒットする >> 検索文字列 A△B で検索した場合 >> DATA3,DATA4がヒットする >> >> 上記の事から前後の半角スペースは無視、又 >> 半角スペースが1以上の場合も無視される >> という認識で正しいでしょうか? >> >> 3.@@→%% >> >> 変更後、 @@でも実行は可能でしたが、 >> @@では必ずシーケンシャルスキャンになってしまう様です。 >> @@と%%は別物という認識で正しいですか? >> >> 以上よろしくお願いします。 >> >> ■環境 >> Redhat Enterprise Linux 4 U6 >> ludia 1.5.0 (mecab-0.97 ipadic-2.7.0 senna-1.1.2 >> postgresql 8.3.0 >> >> _______________________________________________ >> Ludia-users mailing list >> Ludia-users @ lists.sourceforge.jp >> http://lists.sourceforge.jp/mailman/listinfo/ludia-users > > _______________________________________________ > Ludia-users mailing list > Ludia-users @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/ludia-users > > From m.sugito @ gmail.com Tue Apr 8 18:16:24 2008 From: m.sugito @ gmail.com (motoi sugito) Date: Tue, 8 Apr 2008 18:16:24 +0900 Subject: [Ludia-users 212] =?iso-2022-jp?b?GyRCQTRKODghOncbKEIrT1JERVIgQlkgGyRCJEskRCQkGyhC?= =?iso-2022-jp?b?GyRCJEYbKEI=?= Message-ID: はじめまして、杉藤と申します。 Ludiaについて質問させてください。よろしくお願い致します。 【概要】 Ludiaを使って全文検索を実行し、且つその結果をソートして 表示したいのですが、どうしても処理結果が返るのに10秒以上 掛かってしまいます。 検索結果を一瞬(せめて3秒以内)で返るようにしたいのですが、 何かよい方法はございませんでしょうか? 【環境】 O S : CentOS5.1 D B : PostgreSQL 8.3.1 Ludia : 1.5.0 (mecab-0.97 ipadic-2.7.0 senna-1.1.2) 【詳細】 ◆以下の構造のテーブルがあり、400万件データを保持してます テーブル名:item   colmun | type  ------------------------   title | varchar(512)   price | integer   descr | text    :    : ◆このテーブルには以下のインデックスを設定してます。  "idx_item_descr" fulltext (descr)  "idx_item_price" btree (price) ◆このテーブルに対して次のようなSelect文を投げます。  すると結果が返るのに10秒以上掛かってしまいます。  SELECT price, title FROM item WHERE descr %% '価格'      ORDER BY price LIMIT 5 OFFSET 10; 【自分なりの調査結果】 ◆1.通常の全文検索のみの場合では、処理結果が返るのが早いです。 # explain SELECT price, title FROM item WHERE descr %% '価格' LIMIT 5 OFFSET 10;           QUERY PLAN ---------------------------------------------------------------------------- Limit(cost=11.40..16.98 rows=5 width=94)  ->Index Scan using idx_item_descr on item(cost=0.25..1029.75 rows=923 width=94)    Index Cond: (descr %% '価格'::text) ◆2.通常のORDER BYのみの場合でも、処理結果が返るのが早いです。 # explain SELECT price, title FROM item ORDER BY price LIMIT 5 OFFSET 10;           QUERY PLAN ----------------------------------------------------------------------------- Limit(cost=9.69..14.53 rows=5 width=94)  ->Index Scan using idx_item_price on item(cost=0.00..893871.38 rows=922639 width=94) ※この場合、ORDER BYの指定カラム「price」にBtree  インデックスが設定されているのでソート処理が走ら  ないので高速に結果が返ってます。 ◆3.ところが1と2が組み合わさると遅くなってしまいます。 # explain SELECT price, title FROM item WHERE descr %% '価格' ORDER BY price LIMIT 5 OFFSET 10;           QUERY PLAN ----------------------------------------------------------------------------- Limit(cost=1052.42..1052.43 rows=5 width=94)  ->Sort(cost=1052.40..1054.70 rows=923 width=94)    Sort Key: price      ->Index Scan using idx_item_descr on item(cost=0.25..1029.75 rows=923 width=94)        Index Cond: (descr %% '価格'::text) ※(2.の時に)走らなかったsortが走ってしまい。ここに大変時間が掛  かってしまいます。enable_sortをoffにしても解決できませんでした。 以上です。解決策をご存知の方がおりましたら、教えていただきたく 何卒よろしくお願い致します。 From kousakadi @ nttdata.co.jp Thu Apr 10 20:37:27 2008 From: kousakadi @ nttdata.co.jp (kousakadi @ nttdata.co.jp) Date: Thu, 10 Apr 2008 20:37:27 +0900 Subject: [Ludia-users 213] Re: =?iso-2022-jp?b?GyRCQTRKODghOncbKEIrT1JERVIgQlkgGyRCJEsbKEI=?= =?iso-2022-jp?b?GyRCJEQkJCRGGyhC?= References: Message-ID: <178CD7FD87EF4B4BB23F3D0B6C201D3F05BEDDAF@MAILSV11.msg.nttdata.co.jp> 幸坂です。こんにちは。 SELECT count(*) FROM item WHERE descr %% '価格'; SELECT pgs2getnhits(); これらのクエリはそれぞれ何件ぐらい返ってきますか? この値がわからないと、何とも言えません…。 > -----Original Message----- > From: ludia-users-bounces @ lists.sourceforge.jp > [mailto:ludia-users-bounces @ lists.sourceforge.jp] On Behalf Of motoi > sugito > Sent: Tuesday, April 08, 2008 6:16 PM > To: ludia-users @ lists.sourceforge.jp > Subject: [Ludia-users 212]全文検索+ORDER BY について > > はじめまして、杉藤と申します。 > Ludiaについて質問させてください。よろしくお願い致します。 > > > 【概要】 > Ludiaを使って全文検索を実行し、且つその結果をソートして > 表示したいのですが、どうしても処理結果が返るのに10秒以上 > 掛かってしまいます。 > 検索結果を一瞬(せめて3秒以内)で返るようにしたいのですが、 > 何かよい方法はございませんでしょうか? > > > 【環境】 > O S : CentOS5.1 > D B : PostgreSQL 8.3.1 > Ludia : 1.5.0 (mecab-0.97 ipadic-2.7.0 senna-1.1.2) > > > 【詳細】 > ◆以下の構造のテーブルがあり、400万件データを保持してます > > テーブル名:item >   colmun | type >  ------------------------ >   title | varchar(512) >   price | integer >   descr | text >    : >    : > > ◆このテーブルには以下のインデックスを設定してます。 >  "idx_item_descr" fulltext (descr) >  "idx_item_price" btree (price) > > > ◆このテーブルに対して次のようなSelect文を投げます。 >  すると結果が返るのに10秒以上掛かってしまいます。 > >  SELECT price, title FROM item WHERE descr %% '価格' >      ORDER BY price LIMIT 5 OFFSET 10; > > > > 【自分なりの調査結果】 > ◆1.通常の全文検索のみの場合では、処理結果が返るのが早いです。 > > # explain SELECT price, title FROM item WHERE descr %% '価格' LIMIT 5 OFFSET > 10; >           QUERY PLAN > ---------------------------------------------------------------------- > ------ > Limit(cost=11.40..16.98 rows=5 width=94) >  ->Index Scan using idx_item_descr on item(cost=0.25..1029.75 rows=923 > width=94) >    Index Cond: (descr %% '価格'::text) > > > > ◆2.通常のORDER BYのみの場合でも、処理結果が返るのが早いです。 > > # explain SELECT price, title FROM item ORDER BY price LIMIT 5 OFFSET 10; >           QUERY PLAN > ---------------------------------------------------------------------- > ------- > Limit(cost=9.69..14.53 rows=5 width=94) >  ->Index Scan using idx_item_price on item(cost=0.00..893871.38 > rows=922639 width=94) > > ※この場合、ORDER BYの指定カラム「price」にBtree >  インデックスが設定されているのでソート処理が走ら >  ないので高速に結果が返ってます。 > > > > ◆3.ところが1と2が組み合わさると遅くなってしまいます。 > > # explain SELECT price, title FROM item WHERE descr %% '価格' ORDER BY > price LIMIT 5 OFFSET 10; >           QUERY PLAN > ---------------------------------------------------------------------- > ------- > Limit(cost=1052.42..1052.43 rows=5 width=94) >  ->Sort(cost=1052.40..1054.70 rows=923 width=94) >    Sort Key: price >      ->Index Scan using idx_item_descr on item(cost=0.25..1029.75 > rows=923 width=94) >        Index Cond: (descr %% '価格'::text) > > ※(2.の時に)走らなかったsortが走ってしまい。ここに大変時間が掛 >  かってしまいます。enable_sortをoffにしても解決できませんでした。 > > > 以上です。解決策をご存知の方がおりましたら、教えていただきたく > 何卒よろしくお願い致します。 > > _______________________________________________ > Ludia-users mailing list > Ludia-users @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/ludia-users From m.sugito @ gmail.com Thu Apr 10 20:53:31 2008 From: m.sugito @ gmail.com (motoi sugito) Date: Thu, 10 Apr 2008 20:53:31 +0900 Subject: [Ludia-users 214] Re: =?iso-2022-jp?b?GyRCQTRKODghOncbKEIrT1JERVIgQlkgGyRCJEsbKEI=?= =?iso-2022-jp?b?GyRCJEQkJCRGGyhC?= In-Reply-To: <178CD7FD87EF4B4BB23F3D0B6C201D3F05BEDDAF@MAILSV11.msg.nttdata.co.jp> References: <178CD7FD87EF4B4BB23F3D0B6C201D3F05BEDDAF@MAILSV11.msg.nttdata.co.jp> Message-ID: お世話になっております。杉藤です。 説明不足でした。申し訳ござません。 > SELECT count(*) FROM item WHERE descr %% '価格'; > SELECT pgs2getnhits(); > これらのクエリはそれぞれ何件ぐらい返ってきますか? > この値がわからないと、何とも言えません…。  この場合では10万件くらい返します。  ただ、ありふれたフレーズを指定したクエリでは  30万件以上を返す場合もございます。  ちなみにパラメータ「ludia.max_n_sort_result」には  「10000」を指定しております。 以上です。よろしくお願い致します。 08/04/10 に kousakadi @ nttdata.co.jp さんは書きました: > 幸坂です。こんにちは。 > > SELECT count(*) FROM item WHERE descr %% '価格'; > SELECT pgs2getnhits(); > > これらのクエリはそれぞれ何件ぐらい返ってきますか? > この値がわからないと、何とも言えません…。 > > > -----Original Message----- > > From: ludia-users-bounces @ lists.sourceforge.jp > > [mailto:ludia-users-bounces @ lists.sourceforge.jp] On Behalf Of motoi > > sugito > > Sent: Tuesday, April 08, 2008 6:16 PM > > To: ludia-users @ lists.sourceforge.jp > > Subject: [Ludia-users 212]全文検索+ORDER BY について > > > > はじめまして、杉藤と申します。 > > Ludiaについて質問させてください。よろしくお願い致します。 > > > > > > 【概要】 > > Ludiaを使って全文検索を実行し、且つその結果をソートして > > 表示したいのですが、どうしても処理結果が返るのに10秒以上 > > 掛かってしまいます。 > > 検索結果を一瞬(せめて3秒以内)で返るようにしたいのですが、 > > 何かよい方法はございませんでしょうか? > > > > > > 【環境】 > > O S : CentOS5.1 > > D B : PostgreSQL 8.3.1 > > Ludia : 1.5.0 (mecab-0.97 ipadic-2.7.0 senna-1.1.2) > > > > > > 【詳細】 > > ◆以下の構造のテーブルがあり、400万件データを保持してます > > > > テーブル名:item > > colmun | type > > ------------------------ > > title | varchar(512) > > price | integer > > descr | text > > : > > : > > > > ◆このテーブルには以下のインデックスを設定してます。 > > "idx_item_descr" fulltext (descr) > > "idx_item_price" btree (price) > > > > > > ◆このテーブルに対して次のようなSelect文を投げます。 > > すると結果が返るのに10秒以上掛かってしまいます。 > > > > SELECT price, title FROM item WHERE descr %% '価格' > > ORDER BY price LIMIT 5 OFFSET 10; > > > > > > > > 【自分なりの調査結果】 > > ◆1.通常の全文検索のみの場合では、処理結果が返るのが早いです。 > > > > # explain SELECT price, title FROM item WHERE descr %% '価格' LIMIT 5 > OFFSET > > 10; > > QUERY PLAN > > ---------------------------------------------------------------------- > > ------ > > Limit(cost=11.40..16.98 rows=5 width=94) > > ->Index Scan using idx_item_descr on item(cost=0.25..1029.75 rows=923 > > width=94) > > Index Cond: (descr %% '価格'::text) > > > > > > > > ◆2.通常のORDER BYのみの場合でも、処理結果が返るのが早いです。 > > > > # explain SELECT price, title FROM item ORDER BY price LIMIT 5 OFFSET 10; > > QUERY PLAN > > ---------------------------------------------------------------------- > > ------- > > Limit(cost=9.69..14.53 rows=5 width=94) > > ->Index Scan using idx_item_price on item(cost=0.00..893871.38 > > rows=922639 width=94) > > > > ※この場合、ORDER BYの指定カラム「price」にBtree > > インデックスが設定されているのでソート処理が走ら > > ないので高速に結果が返ってます。 > > > > > > > > ◆3.ところが1と2が組み合わさると遅くなってしまいます。 > > > > # explain SELECT price, title FROM item WHERE descr %% '価格' ORDER BY > > price LIMIT 5 OFFSET 10; > > QUERY PLAN > > ---------------------------------------------------------------------- > > ------- > > Limit(cost=1052.42..1052.43 rows=5 width=94) > > ->Sort(cost=1052.40..1054.70 rows=923 width=94) > > Sort Key: price > > ->Index Scan using idx_item_descr on item(cost=0.25..1029.75 > > rows=923 width=94) > > Index Cond: (descr %% '価格'::text) > > > > ※(2.の時に)走らなかったsortが走ってしまい。ここに大変時間が掛 > > かってしまいます。enable_sortをoffにしても解決できませんでした。 > > > > > > 以上です。解決策をご存知の方がおりましたら、教えていただきたく > > 何卒よろしくお願い致します。 > > > > _______________________________________________ > > Ludia-users mailing list > > Ludia-users @ lists.sourceforge.jp > > http://lists.sourceforge.jp/mailman/listinfo/ludia-users > > _______________________________________________ > Ludia-users mailing list > Ludia-users @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/ludia-users > From kousakadi @ nttdata.co.jp Tue Apr 15 11:00:17 2008 From: kousakadi @ nttdata.co.jp (kousakadi @ nttdata.co.jp) Date: Tue, 15 Apr 2008 11:00:17 +0900 Subject: [Ludia-users 215] Re: =?iso-2022-jp?b?GyRCQTRKODghOncbKEIrT1JERVIgQlkgGyRCJEsbKEI=?= =?iso-2022-jp?b?GyRCJEQkJCRGGyhC?= References: <178CD7FD87EF4B4BB23F3D0B6C201D3F05BEDDAF@MAILSV11.msg.nttdata.co.jp> Message-ID: <178CD7FD87EF4B4BB23F3D0B6C201D3F05CBDABF@MAILSV11.msg.nttdata.co.jp> 幸坂です。こんにちは。 ludia.max_n_sort_resultを10000にしているなら、 ソート処理に時間がかかっているわけではなさそうですね。 単純にDBのテーブルからデータを取り出す処理に 時間がかかっていると思われます。 (同じクエリを連続して流した場合、 2度目以降は1秒以内に返ってくると思います。) ◆3を早くしたい場合は、 ・shared_buffersを大きな値にする。 ・SELECT COUNT(*) FROM item; でDBを暖めておく。 などの方法を用いて、テーブルのデータをできるだけ メモリ上に置く必要があります。 また、ludia.max_n_sort_resultをもっと小さい値にして、 アクセスするデータを少なくする方法もあります。 ludia.max_n_sort_resultはスコアの上位を取り出す仕様ですが、 自分で設定した値(今回の例ではprice列)の上位を取り出せるように 変更したいと考えています。 しかし、PostgreSQL8.3のVACUUM対応や、 Windows対応などのタスクが残っているため、 優先順位が低い状況となっております…。 > -----Original Message----- > From: ludia-users-bounces @ lists.sourceforge.jp > [mailto:ludia-users-bounces @ lists.sourceforge.jp] On Behalf Of motoi > sugito > Sent: Thursday, April 10, 2008 8:54 PM > To: ludia-users @ lists.sourceforge.jp > Subject: [Ludia-users 214] Re:全文検索+ORDER BY について > > お世話になっております。杉藤です。 > > 説明不足でした。申し訳ござません。 > > > SELECT count(*) FROM item WHERE descr %% '価格'; > > SELECT pgs2getnhits(); > > これらのクエリはそれぞれ何件ぐらい返ってきますか? > > この値がわからないと、何とも言えません…。 > >  この場合では10万件くらい返します。 >  ただ、ありふれたフレーズを指定したクエリでは >  30万件以上を返す場合もございます。 > >  ちなみにパラメータ「ludia.max_n_sort_result」には >  「10000」を指定しております。 > > 以上です。よろしくお願い致します。 > > > 08/04/10 に kousakadi @ nttdata.co.jp さんは書 > きました: > > 幸坂です。こんにちは。 > > > > SELECT count(*) FROM item WHERE descr %% '価格'; > > SELECT pgs2getnhits(); > > > > これらのクエリはそれぞれ何件ぐらい返ってきますか? > > この値がわからないと、何とも言えません…。 > > > > > -----Original Message----- > > > From: ludia-users-bounces @ lists.sourceforge.jp > > > [mailto:ludia-users-bounces @ lists.sourceforge.jp] On Behalf Of motoi > > > sugito > > > Sent: Tuesday, April 08, 2008 6:16 PM > > > To: ludia-users @ lists.sourceforge.jp > > > Subject: [Ludia-users 212]全文検索+ORDER BY について > > > > > > はじめまして、杉藤と申します。 > > > Ludiaについて質問させてください。よろしくお願い致します。 > > > > > > > > > 【概要】 > > > Ludiaを使って全文検索を実行し、且つその結果をソートして > > > 表示したいのですが、どうしても処理結果が返るのに10秒以上 > > > 掛かってしまいます。 > > > 検索結果を一瞬(せめて3秒以内)で返るようにしたいのですが、 > > > 何かよい方法はございませんでしょうか? > > > > > > > > > 【環境】 > > > O S : CentOS5.1 > > > D B : PostgreSQL 8.3.1 > > > Ludia : 1.5.0 (mecab-0.97 ipadic-2.7.0 senna-1.1.2) > > > > > > > > > 【詳細】 > > > ◆以下の構造のテーブルがあり、400万件データを保持してます > > > > > > テーブル名:item > > > colmun | type > > > ------------------------ > > > title | varchar(512) > > > price | integer > > > descr | text > > > : > > > : > > > > > > ◆このテーブルには以下のインデックスを設定してます。 > > > "idx_item_descr" fulltext (descr) > > > "idx_item_price" btree (price) > > > > > > > > > ◆このテーブルに対して次のようなSelect文を投げます。 > > > すると結果が返るのに10秒以上掛かってしまいます。 > > > > > > SELECT price, title FROM item WHERE descr %% '価格' > > > ORDER BY price LIMIT 5 OFFSET 10; > > > > > > > > > > > > 【自分なりの調査結果】 > > > ◆1.通常の全文検索のみの場合では、処理結果が返るのが早いです。 > > > > > > # explain SELECT price, title FROM item WHERE descr %% '価格' LIMIT > 5 > > OFFSET > > > 10; > > > QUERY PLAN > > > > ---------------------------------------------------------------------- > > > ------ > > > Limit(cost=11.40..16.98 rows=5 width=94) > > > ->Index Scan using idx_item_descr on item(cost=0.25..1029.75 rows=923 > > > width=94) > > > Index Cond: (descr %% '価格'::text) > > > > > > > > > > > > ◆2.通常のORDER BYのみの場合でも、処理結果が返るのが早いです。 > > > > > > # explain SELECT price, title FROM item ORDER BY price LIMIT 5 OFFSET > 10; > > > QUERY PLAN > > > > ---------------------------------------------------------------------- > > > ------- > > > Limit(cost=9.69..14.53 rows=5 width=94) > > > ->Index Scan using idx_item_price on item(cost=0.00..893871.38 > > > rows=922639 width=94) > > > > > > ※この場合、ORDER BYの指定カラム「price」にBtree > > > インデックスが設定されているのでソート処理が走ら > > > ないので高速に結果が返ってます。 > > > > > > > > > > > > ◆3.ところが1と2が組み合わさると遅くなってしまいます。 > > > > > > # explain SELECT price, title FROM item WHERE descr %% '価格' ORDER > BY > > > price LIMIT 5 OFFSET 10; > > > QUERY PLAN > > > > ---------------------------------------------------------------------- > > > ------- > > > Limit(cost=1052.42..1052.43 rows=5 width=94) > > > ->Sort(cost=1052.40..1054.70 rows=923 width=94) > > > Sort Key: price > > > ->Index Scan using idx_item_descr on item(cost=0.25..1029.75 > > > rows=923 width=94) > > > Index Cond: (descr %% '価格'::text) > > > > > > ※(2.の時に)走らなかったsortが走ってしまい。ここに大変時間が掛 > > > かってしまいます。enable_sortをoffにしても解決できませんでした。 > > > > > > > > > 以上です。解決策をご存知の方がおりましたら、教えていただきたく > > > 何卒よろしくお願い致します。 > > > > > > _______________________________________________ > > > Ludia-users mailing list > > > Ludia-users @ lists.sourceforge.jp > > > http://lists.sourceforge.jp/mailman/listinfo/ludia-users > > > > _______________________________________________ > > Ludia-users mailing list > > Ludia-users @ lists.sourceforge.jp > > http://lists.sourceforge.jp/mailman/listinfo/ludia-users > > > > _______________________________________________ > Ludia-users mailing list > Ludia-users @ lists.sourceforge.jp > http://lists.sourceforge.jp/mailman/listinfo/ludia-users From kousakadi @ nttdata.co.jp Tue Apr 15 13:31:07 2008 From: kousakadi @ nttdata.co.jp (kousakadi @ nttdata.co.jp) Date: Tue, 15 Apr 2008 13:31:07 +0900 Subject: [Ludia-users 216] Re: =?iso-2022-jp?b?THVkaWEbJEIlUSVVJSkhPCVeJXMlOSEmJUElZSE8GyhC?= =?iso-2022-jp?b?GyRCJUslcyUwISYlOyVfJUokTiQ0MEZGYhsoQig0LzI1KQ==?= References: <178CD7FD87EF4B4BB23F3D0B6C201D3F0586317B@MAILSV11.msg.nttdata.co.jp> Message-ID: <178CD7FD87EF4B4BB23F3D0B6C201D3F05CBDBA7@MAILSV11.msg.nttdata.co.jp> 幸坂@NTTデータです。こんにちは。 セミナの再周知です。 まだ少し残席がありますので、 お申込を忘れた方は今すぐお申し込みください! セミナで使用する実機はこちらで用意します。 自前で用意するのが困難な全文検索用のテキストや、 構築済みの巨大な全文検索インデックスも用意しております。 ぜひご参加ください。 詳細はこちら↓ http://sourceforge.jp/forum/forum.php?forum_id=14459