[groonga-dev,00697] Re: 全文検索カラム以外を含んだ検索について

Back to archive index

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/




groonga-dev メーリングリストの案内
Back to archive index