Kouhei Sutou
kou****@clear*****
2012年 2月 2日 (木) 18:38:52 JST
須藤です。 In <20120****@gmail*****> "[groonga-dev,00695] Re: 全文検索カラム以外を含んだ検索について" on Wed, 01 Feb 2012 21:14:51 +0900, Takayuki Honda <honda****@gmail*****> wrote: >> 今回のケースは3.にあたるかと思います。 >> mroongaでは、このうち1.と2.のみを実装していますが、3.と4.は >> 未実装です。 > 上記の件了解致しました。 > 対応を期待しつつ、現状では実データで試してみて、 > 応答速度が許容範囲かどうか判断していきたいと思います。 条件付きなのですが、gitリポジトリのmasterで対応してみました。 >> > --------------------------------------------------- >> > select >> > * >> > from >> > table >> > where >> > match(body) against (“さんぷる”) >> > and >> > flag = 1 >> > --------------------------------------------------- ↑だけではなく、↑に加えてORDER BY LIMITを指定すると↓と同じ 論理で高速化するようにしました。 http://mroonga.github.com/ja/docs/userguide/storage.html#optimisation-for-order-by-limit-in-full-text-search たとえば↓のような感じです。 --------------------------------------------------- select * from table where match(body) against (“さんぷる”) and flag = 1 order by match(body) against (“さんぷる”) limit 0, 100 --------------------------------------------------- これまでは、whereには全文検索条件1つのときしか「ORDER BY LIMIT 高速化」ができなかったのですが、全文検索条件と「簡単な 式」のwhereなら高速化するようにしました。 今のところ、「簡単な式」のところは「カラム名 = INTの値」のみ だけサポートしています。が、ここは難しいというよりも手を動か していけば対応種類を増やせるところなので、要望が大きいところ から対応していく進め方が現実的かと思っています。(たとえば、 DOUBLEの値に対応することや「カラム名 < INTの値」などに対応す ることも難しくありません。) もし、1.20で期待した速度が出ない場合はこちらも試してみて結果 を教えてもらえると嬉しいです。 -- 須藤 功平 <kou****@clear*****> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270) プログラミングが好きなソフトウェア開発者を募集中: http://www.clear-code.com/recruitment/