YUKI Hiroshi
null+****@clear*****
Fri Feb 6 12:03:29 JST 2015
YUKI Hiroshi 2015-02-06 12:03:29 +0900 (Fri, 06 Feb 2015) New Revision: 8aaf910f81de3ce6fec6e0ad390602ec2d8cf931 https://github.com/droonga/presentation-trbmeetup-droonga/commit/8aaf910f81de3ce6fec6e0ad390602ec2d8cf931 Message: Add more slides including conclusion Added files: images/application-with-groonga-rroonga.png images/groonga.png Modified files: fast-fulltext-search-in-ruby-groonga-rroonga-droonga.md images/application-with-groonga.png images/application-with-index-java.png images/application-with-index.png images/droonga.png images/groonga-rroonga.png images/groonga.odg Modified: fast-fulltext-search-in-ruby-groonga-rroonga-droonga.md (+66 -24) =================================================================== --- fast-fulltext-search-in-ruby-groonga-rroonga-droonga.md 2015-02-05 19:21:50 +0900 (8b76163) +++ fast-fulltext-search-in-ruby-groonga-rroonga-droonga.md 2015-02-06 12:03:29 +0900 (97b8bab) @@ -150,7 +150,7 @@ and # Groonga * Fast fulltext search engine written in *C++* - * Originally designed to search increasing huge numbers of comments (like Twitter) + * Originally designed to search increasing huge numbers of comments in "2ch" (like Twitter) # Groonga @@ -158,34 +158,64 @@ and * Read/write lock-free * Parallel updating and searching, without penalty * Returns latest contents ASAP - * No transaction, fragile + * No transaction -# Groonga +# Relations of services + +![](images/application-with-groonga.png){:relative_width="80"} -Different usecases +# Groonga's interfaces + +via command line interface + +~~~ +$ groonga="groonga /path/to/database/db" +$ $groonga table_create --name Entries + --flags TABLE_PAT_KEY --key_type ShortText +$ $groonga select --table Entries + --query "title:@Ruby" +~~~ -Groonga as a server -: * Command line tool - * HTTP server +# Groonga's interfaces + +via HTTP + +~~~ +$ groonga -d --protocol http --port 10041 + /path/to/database/db + +$ endpoint="http://groonga:10041" +$ curl "${endpoint}/d/table_create?name=Entries& + flags=TABLE_PAT_KEY&key_type=ShortText" +$ curl "${endpoint}/d/select?table=Entries& + query=title:@Ruby" +~~~ + +# Groonga's interfaces + +Narrowly-defined "Groonga" +: * CLI or server libgroonga : * In-process library + * Like as "better SQLite" + +# Groonga +![](images/groonga.png){:relative_height="90"} # *R*roonga - * Based on libgroonga - * Low-level binding of Groonga for *Ruby* - * Works like as "better SQLite" - for your application +![](images/groonga-rroonga.png){:relative_height="90"} -# Groonga and Rroonga +# *R*roonga -![](images/groonga-rroonga.png){:relative_height="90"} + * Based on libgroonga + * Low-level binding of Groonga for *Ruby* # Relations of services -![](images/application-with-groonga.png){:relative_width="80"} +![](images/application-with-groonga-rroonga.png){:relative_width="80"} # Usage of Rroonga @@ -249,10 +279,10 @@ end # FYI: GrnMini - * Lightweight wrapper for Rroonga - * Limited features, easy to use - * Good first step to try fulltext search on your Ruby product - + * Lightweight wrapper + for Rroonga + * Limited features, + but easy to use # FYI: GrnMini @@ -263,20 +293,22 @@ GrnMini::create_or_open("/tmp/bookmarks.db") items = GrnMini::Array.new("Items") items << { url: "http://en.wikipedia.org/wiki/Ruby", - title: "Wikipedia" } + title: "Ruby - Wikipedia" } items << { url: "http://www.ruby-lang.org/", - title: "Ruby" } + title: "Ruby Language" } -ruby_items = items.select("title:Ruby") +ruby_items = items.select("title:@Ruby") ~~~ -# *D*roonga +Good first step to try fulltext search in your Ruby product. + +# For much more load... Groonga -: works with single process on a computer +: works with *single process* on a computer *D*roonga -: works with multiple computers constructiong a Droonga cluster +: works with *multiple computers* constructiong a Droonga cluster # Droonga @@ -297,6 +329,8 @@ Groonga # Usage of Droonga +Setup a Droonga node + ~~~ # base="https://raw.githubusercontent.com/droonga" # curl ${base}/droonga-engine/master/install.sh | \ @@ -310,12 +344,20 @@ Groonga # Usage of Droonga +Fulltext search via HTTP +(compatible to Groonga) + ~~~ $ endpoint="http://node0:10041" $ curl "${endpoint}/d/table_create?name=Store& flags=TABLE_PAT_KEY&key_type=ShortText" ~~~ +# Conclusion + + * You can introduce fast fulltext search into your Ruby product easily, by a gem package, *"rroonga"* or *"grn_mini"*. + * For increasing load, there is one more choice *Droonga*. + # References Sunspot Added: images/application-with-groonga-rroonga.png (+0 -0) 100644 =================================================================== (Binary files differ) Modified: images/application-with-groonga.png (+0 -0) =================================================================== (Binary files differ) Modified: images/application-with-index-java.png (+0 -0) =================================================================== (Binary files differ) Modified: images/application-with-index.png (+0 -0) =================================================================== (Binary files differ) Modified: images/droonga.png (+0 -0) =================================================================== (Binary files differ) Modified: images/groonga-rroonga.png (+0 -0) =================================================================== (Binary files differ) Modified: images/groonga.odg (+0 -0) =================================================================== (Binary files differ) Added: images/groonga.png (+0 -0) 100644 =================================================================== (Binary files differ) -------------- next part -------------- HTML����������������������������... 다운로드