SlideShare uma empresa Scribd logo
1 de 26
Suffix Array
Solr       2011/12/19




       1
•              (@nobu_k)

• Preferred Infrastructure (PFI   FI)

  •
  •
• Sedue(2 )
                      2
Suffix Array
•   Suffix Array(SA):

•   (      )                       1

    •    Sedue

•   SA

•
    •    +Sedue

•                      ”   -           ”


                               3
•
•
    •              (       )

    • n-gram(q-gram)
•
                       4
Suffix Array
•
•
• n-gram
  •
•
                5
Suffix(                )
                   0:   mississippi
                   1:   ississippi
                   2:   ssissippi
                   3:   sissippi
mississippi
                   4:   issippi
                   5:   ssippi
                   6:   sippi
                   7:   ippi
                   8:   ppi
                   9:   pi
                  10:   i
              6
Suffix Array
 0:   mississippi       10:   i
 1:   ississippi         7:   ippi
 2:   ssissippi          4:   issippi
 3:   sissippi           1:   ississippi
 4:   issippi            0:   mississippi
 5:   ssippi             9:   pi
 6:   sippi              8:   ppi
 7:   ippi               6:   sippi
 8:   ppi                3:   sissippi
 9:   pi                 5:   ssippi
10:   i                  2:   ssissippi

                    7
10:   i
 7:   ippi          •   mississippi    ’si’
 4:   issippi
 1:   ississippi    •   ’si’
 0:   mississippi
 9:   pi            •
 8:   ppi
 6:
 3:
      sippi
      sissippi
                    •
 5:   ssippi
 2:   ssissippi         •      3   6


                        8
10:   i             SA[i]:
 7:   ippi
 4:   issippi       10 7 4 1 0 9 8 6 3 5 2
 1:   ississippi     T[i]:
 0:   mississippi
 9:   pi            m i s s i s s i p p i
 8:   ppi
 6:   sippi
 3:   sissippi                   6
 5:   ssippi          T[SA[6]]
 2:   ssissippi     → T[8]
                    → “ppi”
                       9
(1/3)

T[i]:
   1    2         3   ...        n

                            SA

            SA[i]


             10
(2/3)
RedBull            !!

1. RedBull                             *2
    RedBull        SA[i]
          2.
    RedBull


     1         2        3   ...    n
                            11
(3/3)
3.
     RedBull


      1          2      3        ...          n

4.

(     1, 3), (       2, 4), (          3, 2),...,(   n, 2)

                            12
•       SA

    •                  +

    •        /n-gram

• SA
•
               13
SA
•                        (n-gram        )

    •
•               n-gram

•
    •
        •   “THIS IS IT”
    •   proximity

                                   14
SA
•
    •
    •
•
    •   HDD

    •         (        )

•
    •
                  15
•
•                                   (   )

    •   SAIS

    •
•   HDD

    •                                   (dc3, dc7)

•   Sedue      Haskell        C++

    •   @tanakh++


                         16
•                         (             )

    •
    •
        •    1       100GB/day

•   Sedue

    •   SA                n-gram

    •            n-gram

    •   SA           n-gram

    •

                                   17
HDD
•               HDD

•                     OK

    •
    •
•   SSD

    •   SSD

•   Sedue              20       (80MB)

    •   SA[i]


                           18
VS
1.   SA

     •
2.

     •    SSD+              500

3.

     •    O(N)       CPU

4.

     •
•           malloc



                           19
•   Sedue   1                  56

    •           : 40

    •             : 16          (UTF-16)

    •                           2   3

•
    •                           =

    •
        •                SSD

•

                                        20
SA
•
    •            4(+1)

        •   2-gram

    •
        •                %        OK

    •
•   ”        ”

    •
                             21
•
    •
    •
•
    •
        22
: groonga

• Sedue   groonga

  •
•
• Sedue       groonga!!


                    23
:
•

•
•              (http://jubat.us/)

    •   http://github.com/jubatus
    •   @JubatusOfficial
•                    with NTT PF

                               24
: Fluentd
•            Ruby

• Treasure Data, Inc.
  • @frsyuki, @kzk_mover
• Solr
• gem install fluentd
• Visit http://fluentd.org/doc/ now!!
                      25
•


    26

Mais conteúdo relacionado

Semelhante a Suffix Array@Solr勉強会

メドピアでの開発の裏側
メドピアでの開発の裏側メドピアでの開発の裏側
メドピアでの開発の裏側Hiromichi Hirakawa
 
Monitoring MongoDB (MongoSV)
Monitoring MongoDB (MongoSV)Monitoring MongoDB (MongoSV)
Monitoring MongoDB (MongoSV)Boxed Ice
 
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみたスマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみたTaro Matsuzawa
 
20160708 データ処理のプラットフォームとしてのpython 札幌
20160708 データ処理のプラットフォームとしてのpython 札幌20160708 データ処理のプラットフォームとしてのpython 札幌
20160708 データ処理のプラットフォームとしてのpython 札幌Ryuji Tamagawa
 
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門Keiichiro Ono
 
20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
20161004 データ処理のプラットフォームとしてのpythonとpandas 東京20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
20161004 データ処理のプラットフォームとしてのpythonとpandas 東京Ryuji Tamagawa
 
MongoDB - Monitoring and queueing
MongoDB - Monitoring and queueingMongoDB - Monitoring and queueing
MongoDB - Monitoring and queueingBoxed Ice
 
MongoDB - Monitoring & queueing
MongoDB - Monitoring & queueingMongoDB - Monitoring & queueing
MongoDB - Monitoring & queueingBoxed Ice
 
ひけらかし会(visualization)
ひけらかし会(visualization)ひけらかし会(visualization)
ひけらかし会(visualization)moai kids
 
三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか鉄次 尾形
 
Monitoring MongoDB (MongoUK)
Monitoring MongoDB (MongoUK)Monitoring MongoDB (MongoUK)
Monitoring MongoDB (MongoUK)Boxed Ice
 
Programming Contest Hacks
Programming Contest HacksProgramming Contest Hacks
Programming Contest HacksKosei Moriyama
 
Mpa Ji Study Presentaton
Mpa Ji Study PresentatonMpa Ji Study Presentaton
Mpa Ji Study Presentatonrobcoulthard
 
[DL輪読会]Tracking Emerges by Colorizing Videos
[DL輪読会]Tracking Emerges by Colorizing Videos[DL輪読会]Tracking Emerges by Colorizing Videos
[DL輪読会]Tracking Emerges by Colorizing VideosDeep Learning JP
 
Google Polymer in Action
Google Polymer in ActionGoogle Polymer in Action
Google Polymer in ActionJeongkyu Shin
 
DevLove k8s nobusue 20180711
DevLove k8s nobusue 20180711DevLove k8s nobusue 20180711
DevLove k8s nobusue 20180711Nobuhiro Sue
 
バ、バカな...!ハッカソンの中で成長しているだと...!?
バ、バカな...!ハッカソンの中で成長しているだと...!?バ、バカな...!ハッカソンの中で成長しているだと...!?
バ、バカな...!ハッカソンの中で成長しているだと...!?Kenji Tanaka
 
証明駆動開発のたのしみ@名古屋reject会議
証明駆動開発のたのしみ@名古屋reject会議証明駆動開発のたのしみ@名古屋reject会議
証明駆動開発のたのしみ@名古屋reject会議Hiroki Mizuno
 

Semelhante a Suffix Array@Solr勉強会 (20)

メドピアでの開発の裏側
メドピアでの開発の裏側メドピアでの開発の裏側
メドピアでの開発の裏側
 
Monitoring MongoDB (MongoSV)
Monitoring MongoDB (MongoSV)Monitoring MongoDB (MongoSV)
Monitoring MongoDB (MongoSV)
 
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみたスマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
スマートフォン勉強会@関東 #11 どう考えてもdisconなものをiPhoneに移植してみた
 
20160708 データ処理のプラットフォームとしてのpython 札幌
20160708 データ処理のプラットフォームとしてのpython 札幌20160708 データ処理のプラットフォームとしてのpython 札幌
20160708 データ処理のプラットフォームとしてのpython 札幌
 
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
『繋がり』を見る: Cytoscapeと周辺ツールを使ったグラフデータ可視化入門
 
20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
20161004 データ処理のプラットフォームとしてのpythonとpandas 東京20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
 
MongoDB - Monitoring and queueing
MongoDB - Monitoring and queueingMongoDB - Monitoring and queueing
MongoDB - Monitoring and queueing
 
MongoDB - Monitoring & queueing
MongoDB - Monitoring & queueingMongoDB - Monitoring & queueing
MongoDB - Monitoring & queueing
 
ひけらかし会(visualization)
ひけらかし会(visualization)ひけらかし会(visualization)
ひけらかし会(visualization)
 
Cassandra 分散データベース
Cassandra 分散データベースCassandra 分散データベース
Cassandra 分散データベース
 
三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか三角関数の加法定理はなぜ難しいのか
三角関数の加法定理はなぜ難しいのか
 
Monitoring MongoDB (MongoUK)
Monitoring MongoDB (MongoUK)Monitoring MongoDB (MongoUK)
Monitoring MongoDB (MongoUK)
 
Programming Contest Hacks
Programming Contest HacksProgramming Contest Hacks
Programming Contest Hacks
 
Mpa Ji Study Presentaton
Mpa Ji Study PresentatonMpa Ji Study Presentaton
Mpa Ji Study Presentaton
 
[DL輪読会]Tracking Emerges by Colorizing Videos
[DL輪読会]Tracking Emerges by Colorizing Videos[DL輪読会]Tracking Emerges by Colorizing Videos
[DL輪読会]Tracking Emerges by Colorizing Videos
 
Google Polymer in Action
Google Polymer in ActionGoogle Polymer in Action
Google Polymer in Action
 
DevLove k8s nobusue 20180711
DevLove k8s nobusue 20180711DevLove k8s nobusue 20180711
DevLove k8s nobusue 20180711
 
バ、バカな...!ハッカソンの中で成長しているだと...!?
バ、バカな...!ハッカソンの中で成長しているだと...!?バ、バカな...!ハッカソンの中で成長しているだと...!?
バ、バカな...!ハッカソンの中で成長しているだと...!?
 
SendaiRubyKaigi02 LT
SendaiRubyKaigi02 LTSendaiRubyKaigi02 LT
SendaiRubyKaigi02 LT
 
証明駆動開発のたのしみ@名古屋reject会議
証明駆動開発のたのしみ@名古屋reject会議証明駆動開発のたのしみ@名古屋reject会議
証明駆動開発のたのしみ@名古屋reject会議
 

Mais de nobu_k

Elasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させるElasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させるnobu_k
 
機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索nobu_k
 
4th PFI System reading
4th PFI System reading4th PFI System reading
4th PFI System readingnobu_k
 
Goraft and InfluxDB
Goraft and InfluxDBGoraft and InfluxDB
Goraft and InfluxDBnobu_k
 
Transactional Information Systems入門
Transactional Information Systems入門Transactional Information Systems入門
Transactional Information Systems入門nobu_k
 
Riak Source Code Reading #2: Erlang Client
Riak Source Code Reading #2: Erlang ClientRiak Source Code Reading #2: Erlang Client
Riak Source Code Reading #2: Erlang Clientnobu_k
 
第一回MongoDBソースコードリーディング
第一回MongoDBソースコードリーディング第一回MongoDBソースコードリーディング
第一回MongoDBソースコードリーディングnobu_k
 

Mais de nobu_k (8)

Elasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させるElasticsearchと機械学習を実際に連携させる
Elasticsearchと機械学習を実際に連携させる
 
機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索機械学習を利用したちょっとリッチな検索
機械学習を利用したちょっとリッチな検索
 
4th PFI System reading
4th PFI System reading4th PFI System reading
4th PFI System reading
 
Goraft and InfluxDB
Goraft and InfluxDBGoraft and InfluxDB
Goraft and InfluxDB
 
Transactional Information Systems入門
Transactional Information Systems入門Transactional Information Systems入門
Transactional Information Systems入門
 
Riak Source Code Reading #2: Erlang Client
Riak Source Code Reading #2: Erlang ClientRiak Source Code Reading #2: Erlang Client
Riak Source Code Reading #2: Erlang Client
 
Paxos
PaxosPaxos
Paxos
 
第一回MongoDBソースコードリーディング
第一回MongoDBソースコードリーディング第一回MongoDBソースコードリーディング
第一回MongoDBソースコードリーディング
 

Suffix Array@Solr勉強会

  • 1. Suffix Array Solr 2011/12/19 1
  • 2. (@nobu_k) • Preferred Infrastructure (PFI FI) • • • Sedue(2 ) 2
  • 3. Suffix Array • Suffix Array(SA): • ( ) 1 • Sedue • SA • • +Sedue • ” - ” 3
  • 4. • • • ( ) • n-gram(q-gram) • 4
  • 6. Suffix( ) 0: mississippi 1: ississippi 2: ssissippi 3: sissippi mississippi 4: issippi 5: ssippi 6: sippi 7: ippi 8: ppi 9: pi 10: i 6
  • 7. Suffix Array 0: mississippi 10: i 1: ississippi 7: ippi 2: ssissippi 4: issippi 3: sissippi 1: ississippi 4: issippi 0: mississippi 5: ssippi 9: pi 6: sippi 8: ppi 7: ippi 6: sippi 8: ppi 3: sissippi 9: pi 5: ssippi 10: i 2: ssissippi 7
  • 8. 10: i 7: ippi • mississippi ’si’ 4: issippi 1: ississippi • ’si’ 0: mississippi 9: pi • 8: ppi 6: 3: sippi sissippi • 5: ssippi 2: ssissippi • 3 6 8
  • 9. 10: i SA[i]: 7: ippi 4: issippi 10 7 4 1 0 9 8 6 3 5 2 1: ississippi T[i]: 0: mississippi 9: pi m i s s i s s i p p i 8: ppi 6: sippi 3: sissippi 6 5: ssippi T[SA[6]] 2: ssissippi → T[8] → “ppi” 9
  • 10. (1/3) T[i]: 1 2 3 ... n SA SA[i] 10
  • 11. (2/3) RedBull !! 1. RedBull *2 RedBull SA[i] 2. RedBull 1 2 3 ... n 11
  • 12. (3/3) 3. RedBull 1 2 3 ... n 4. ( 1, 3), ( 2, 4), ( 3, 2),...,( n, 2) 12
  • 13. SA • + • /n-gram • SA • 13
  • 14. SA • (n-gram ) • • n-gram • • • “THIS IS IT” • proximity 14
  • 15. SA • • • • • HDD • ( ) • • 15
  • 16. • • ( ) • SAIS • • HDD • (dc3, dc7) • Sedue Haskell C++ • @tanakh++ 16
  • 17. ( ) • • • 1 100GB/day • Sedue • SA n-gram • n-gram • SA n-gram • 17
  • 18. HDD • HDD • OK • • • SSD • SSD • Sedue 20 (80MB) • SA[i] 18
  • 19. VS 1. SA • 2. • SSD+ 500 3. • O(N) CPU 4. • • malloc 19
  • 20. Sedue 1 56 • : 40 • : 16 (UTF-16) • 2 3 • • = • • SSD • 20
  • 21. SA • • 4(+1) • 2-gram • • % OK • • ” ” • 21
  • 22. • • • • 22
  • 23. : groonga • Sedue groonga • • • Sedue groonga!! 23
  • 24. : • • • (http://jubat.us/) • http://github.com/jubatus • @JubatusOfficial • with NTT PF 24
  • 25. : Fluentd • Ruby • Treasure Data, Inc. • @frsyuki, @kzk_mover • Solr • gem install fluentd • Visit http://fluentd.org/doc/ now!! 25
  • 26. 26

Notas do Editor

  1. \n
  2. \n
  3. \n
  4. \n
  5. \n
  6. \n
  7. \n
  8. \n
  9. \n
  10. \n
  11. \n
  12. \n
  13. \n
  14. \n
  15. \n
  16. \n
  17. \n
  18. \n
  19. \n
  20. \n
  21. \n
  22. \n
  23. \n
  24. \n
  25. \n
  26. \n