rroonga 1.0.1-x86-mingw32 → 1.1.0-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (387) hide show
  1. data/NEWS.ja.rdoc +146 -0
  2. data/NEWS.rdoc +146 -0
  3. data/README.ja.rdoc +7 -5
  4. data/README.rdoc +6 -5
  5. data/Rakefile +170 -18
  6. data/benchmark/create-wikipedia-database.rb +212 -0
  7. data/benchmark/read-write-many-small-items.rb +0 -0
  8. data/benchmark/repeat-load.rb +213 -0
  9. data/benchmark/select.rb +1052 -0
  10. data/benchmark/write-many-small-items.rb +0 -0
  11. data/example/bookmark.rb +94 -91
  12. data/example/index-html.rb +0 -0
  13. data/ext/groonga/extconf.rb +6 -6
  14. data/ext/groonga/rb-grn-accessor.c +1 -1
  15. data/ext/groonga/rb-grn-array.c +1 -1
  16. data/ext/groonga/rb-grn-column.c +201 -10
  17. data/ext/groonga/rb-grn-context.c +119 -20
  18. data/ext/groonga/rb-grn-database.c +27 -4
  19. data/ext/groonga/rb-grn-exception.c +15 -0
  20. data/ext/groonga/rb-grn-expression.c +14 -10
  21. data/ext/groonga/rb-grn-hash.c +4 -4
  22. data/ext/groonga/rb-grn-index-column.c +10 -6
  23. data/ext/groonga/rb-grn-logger.c +2 -2
  24. data/ext/groonga/rb-grn-object.c +33 -29
  25. data/ext/groonga/{rb-grn-operation.c → rb-grn-operator.c} +89 -87
  26. data/ext/groonga/rb-grn-patricia-trie.c +12 -12
  27. data/ext/groonga/rb-grn-plugin.c +134 -0
  28. data/ext/groonga/rb-grn-procedure.c +1 -1
  29. data/ext/groonga/rb-grn-query.c +7 -7
  30. data/ext/groonga/rb-grn-snippet.c +4 -3
  31. data/ext/groonga/rb-grn-table-cursor.c +1 -1
  32. data/ext/groonga/rb-grn-table-key-support.c +27 -24
  33. data/ext/groonga/rb-grn-table.c +119 -58
  34. data/ext/groonga/rb-grn-type.c +1 -1
  35. data/ext/groonga/rb-grn-utils.c +20 -19
  36. data/ext/groonga/rb-grn-variable.c +1 -1
  37. data/ext/groonga/rb-grn-view-accessor.c +1 -1
  38. data/ext/groonga/rb-grn-view.c +1 -1
  39. data/ext/groonga/rb-grn.h +26 -20
  40. data/ext/groonga/rb-groonga.c +6 -4
  41. data/extconf.rb +10 -4
  42. data/html/developer.html +8 -2
  43. data/html/favicon.ico +0 -0
  44. data/html/favicon.svg +591 -0
  45. data/html/index.html +78 -12
  46. data/html/logo.svg +612 -0
  47. data/html/ranguba.css +92 -7
  48. data/html/readme.svg +256 -0
  49. data/lib/groonga.so +0 -0
  50. data/lib/groonga/context.rb +52 -1
  51. data/lib/groonga/expression-builder.rb +42 -6
  52. data/lib/groonga/record.rb +84 -15
  53. data/lib/groonga/schema.rb +524 -122
  54. data/pkg/rroonga-1.1.0-x86-mingw32/NEWS.ja.rdoc +326 -0
  55. data/pkg/rroonga-1.1.0-x86-mingw32/NEWS.rdoc +328 -0
  56. data/pkg/rroonga-1.1.0-x86-mingw32/README.ja.rdoc +68 -0
  57. data/pkg/rroonga-1.1.0-x86-mingw32/README.rdoc +68 -0
  58. data/pkg/rroonga-1.1.0-x86-mingw32/text/expression.rdoc +285 -0
  59. data/{text/TUTORIAL.ja.rdoc → pkg/rroonga-1.1.0-x86-mingw32/text/tutorial.ja.rdoc} +165 -126
  60. data/pkg/rroonga-1.1.0/NEWS.ja.rdoc +326 -0
  61. data/pkg/rroonga-1.1.0/NEWS.rdoc +328 -0
  62. data/pkg/rroonga-1.1.0/README.ja.rdoc +68 -0
  63. data/pkg/rroonga-1.1.0/README.rdoc +68 -0
  64. data/pkg/rroonga-1.1.0/text/expression.rdoc +285 -0
  65. data/pkg/rroonga-1.1.0/text/tutorial.ja.rdoc +433 -0
  66. data/rroonga-build.rb +3 -3
  67. data/test/run-test.rb +1 -1
  68. data/test/test-array.rb +4 -0
  69. data/test/test-column.rb +31 -1
  70. data/test/test-context-select.rb +45 -14
  71. data/test/test-context.rb +44 -0
  72. data/test/test-database.rb +21 -1
  73. data/test/test-expression-builder.rb +46 -5
  74. data/test/test-fix-size-column.rb +12 -0
  75. data/test/test-hash.rb +10 -4
  76. data/test/test-index-column.rb +33 -0
  77. data/test/test-patricia-trie.rb +6 -0
  78. data/test/test-plugin.rb +29 -0
  79. data/test/test-record.rb +84 -1
  80. data/test/test-remote.rb +3 -2
  81. data/test/test-schema-create-table.rb +32 -2
  82. data/test/test-schema-type.rb +167 -0
  83. data/test/test-schema.rb +159 -12
  84. data/test/test-table-select-weight.rb +20 -1
  85. data/test/test-table-select.rb +12 -0
  86. data/test/test-table.rb +65 -0
  87. data/test/test-variable-size-column.rb +12 -0
  88. data/text/tutorial.ja.rdoc +433 -0
  89. data/vendor/local/bin/grntest.exe +0 -0
  90. data/vendor/local/bin/groonga.exe +0 -0
  91. data/vendor/local/bin/libgroonga-0.dll +0 -0
  92. data/vendor/local/etc/groonga/init.d/redhat/groonga +1 -9
  93. data/vendor/local/include/groonga/groonga.h +156 -6
  94. data/vendor/local/include/groonga/groonga/plugin.h +44 -0
  95. data/vendor/local/lib/groonga/plugins/suggest/suggest.a +0 -0
  96. data/vendor/local/lib/groonga/plugins/suggest/suggest.dll +0 -0
  97. data/vendor/local/lib/groonga/plugins/suggest/suggest.dll.a +0 -0
  98. data/vendor/local/lib/groonga/{modules → plugins}/suggest/suggest.la +2 -2
  99. data/vendor/local/lib/libgroonga.a +0 -0
  100. data/vendor/local/lib/libgroonga.dll.a +0 -0
  101. data/vendor/local/lib/libgroonga.la +1 -1
  102. data/vendor/local/lib/pkgconfig/groonga.pc +3 -2
  103. data/vendor/local/share/groonga/examples/dictionary/edict/edict_import.sh +14 -3
  104. data/vendor/local/share/groonga/examples/dictionary/eijiro/eijiro_import.sh +3 -1
  105. data/vendor/local/share/groonga/examples/dictionary/gene95/gene_import.sh +19 -3
  106. data/vendor/local/share/groonga/munin/plugins/groonga_cpu_load +0 -0
  107. data/vendor/local/share/groonga/munin/plugins/groonga_cpu_time +0 -0
  108. data/vendor/local/share/groonga/munin/plugins/groonga_disk +0 -0
  109. data/vendor/local/share/groonga/munin/plugins/groonga_memory +0 -0
  110. data/vendor/local/share/groonga/munin/plugins/groonga_n_records +0 -0
  111. data/vendor/local/share/groonga/munin/plugins/groonga_query_performance +0 -0
  112. data/vendor/local/share/groonga/munin/plugins/groonga_status +0 -0
  113. metadata +91 -341
  114. data/html/favicon.xcf +0 -0
  115. data/html/logo.xcf +0 -0
  116. data/lib/1.8/groonga.so +0 -0
  117. data/lib/1.9/groonga.so +0 -0
  118. data/license/GPL +0 -340
  119. data/license/RUBY +0 -59
  120. data/vendor/local/lib/groonga/modules/suggest/suggest.a +0 -0
  121. data/vendor/local/lib/groonga/modules/suggest/suggest.dll +0 -0
  122. data/vendor/local/lib/groonga/modules/suggest/suggest.dll.a +0 -0
  123. data/vendor/local/share/groonga/doc/ja/html/.buildinfo +0 -4
  124. data/vendor/local/share/groonga/doc/ja/html/_sources/characteristic.txt +0 -56
  125. data/vendor/local/share/groonga/doc/ja/html/_sources/commands.txt +0 -10
  126. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/cache_limit.txt +0 -52
  127. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/check.txt +0 -164
  128. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/clearlock.txt +0 -61
  129. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/column_create.txt +0 -93
  130. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/column_list.txt +0 -97
  131. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/column_remove.txt +0 -58
  132. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/define_selector.txt +0 -114
  133. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/defrag.txt +0 -57
  134. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/delete.txt +0 -68
  135. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/dump.txt +0 -62
  136. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/load.txt +0 -98
  137. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/log_level.txt +0 -65
  138. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/log_put.txt +0 -69
  139. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/log_reopen.txt +0 -66
  140. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/quit.txt +0 -38
  141. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/select.txt +0 -247
  142. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/shutdown.txt +0 -38
  143. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/status.txt +0 -59
  144. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/suggest.txt +0 -79
  145. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/table_create.txt +0 -111
  146. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/table_list.txt +0 -87
  147. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/table_remove.txt +0 -50
  148. data/vendor/local/share/groonga/doc/ja/html/_sources/commands/view_add.txt +0 -53
  149. data/vendor/local/share/groonga/doc/ja/html/_sources/commands_not_implemented/add.txt +0 -102
  150. data/vendor/local/share/groonga/doc/ja/html/_sources/commands_not_implemented/get.txt +0 -78
  151. data/vendor/local/share/groonga/doc/ja/html/_sources/commands_not_implemented/set.txt +0 -103
  152. data/vendor/local/share/groonga/doc/ja/html/_sources/developer.txt +0 -10
  153. data/vendor/local/share/groonga/doc/ja/html/_sources/developer/com.txt +0 -18
  154. data/vendor/local/share/groonga/doc/ja/html/_sources/developer/document.txt +0 -38
  155. data/vendor/local/share/groonga/doc/ja/html/_sources/developer/query.txt +0 -212
  156. data/vendor/local/share/groonga/doc/ja/html/_sources/developer/test.txt +0 -114
  157. data/vendor/local/share/groonga/doc/ja/html/_sources/execfile.txt +0 -226
  158. data/vendor/local/share/groonga/doc/ja/html/_sources/expr.txt +0 -43
  159. data/vendor/local/share/groonga/doc/ja/html/_sources/functions.txt +0 -10
  160. data/vendor/local/share/groonga/doc/ja/html/_sources/functions/edit_distance.txt +0 -48
  161. data/vendor/local/share/groonga/doc/ja/html/_sources/functions/geo_distance.txt +0 -51
  162. data/vendor/local/share/groonga/doc/ja/html/_sources/functions/geo_in_circle.txt +0 -54
  163. data/vendor/local/share/groonga/doc/ja/html/_sources/functions/geo_in_rectangle.txt +0 -55
  164. data/vendor/local/share/groonga/doc/ja/html/_sources/functions/now.txt +0 -34
  165. data/vendor/local/share/groonga/doc/ja/html/_sources/functions/rand.txt +0 -41
  166. data/vendor/local/share/groonga/doc/ja/html/_sources/grnslap.txt +0 -64
  167. data/vendor/local/share/groonga/doc/ja/html/_sources/grntest.txt +0 -259
  168. data/vendor/local/share/groonga/doc/ja/html/_sources/http.txt +0 -52
  169. data/vendor/local/share/groonga/doc/ja/html/_sources/index.txt +0 -21
  170. data/vendor/local/share/groonga/doc/ja/html/_sources/install.txt +0 -114
  171. data/vendor/local/share/groonga/doc/ja/html/_sources/news.txt +0 -199
  172. data/vendor/local/share/groonga/doc/ja/html/_sources/process.txt +0 -12
  173. data/vendor/local/share/groonga/doc/ja/html/_sources/pseudo_column.txt +0 -38
  174. data/vendor/local/share/groonga/doc/ja/html/_sources/reference.txt +0 -14
  175. data/vendor/local/share/groonga/doc/ja/html/_sources/tutorial.txt +0 -10
  176. data/vendor/local/share/groonga/doc/ja/html/_sources/tutorial/tutorial01.txt +0 -293
  177. data/vendor/local/share/groonga/doc/ja/html/_sources/tutorial/tutorial02.txt +0 -100
  178. data/vendor/local/share/groonga/doc/ja/html/_sources/tutorial/tutorial03.txt +0 -72
  179. data/vendor/local/share/groonga/doc/ja/html/_sources/tutorial/tutorial04.txt +0 -111
  180. data/vendor/local/share/groonga/doc/ja/html/_sources/tutorial/tutorial05.txt +0 -65
  181. data/vendor/local/share/groonga/doc/ja/html/_sources/tutorial/tutorial06.txt +0 -91
  182. data/vendor/local/share/groonga/doc/ja/html/_sources/tutorial/tutorial07.txt +0 -92
  183. data/vendor/local/share/groonga/doc/ja/html/_sources/tutorial/tutorial08.txt +0 -53
  184. data/vendor/local/share/groonga/doc/ja/html/_sources/tutorial/tutorial09.txt +0 -9
  185. data/vendor/local/share/groonga/doc/ja/html/_sources/tutorial/tutorial10.txt +0 -486
  186. data/vendor/local/share/groonga/doc/ja/html/_sources/type.txt +0 -118
  187. data/vendor/local/share/groonga/doc/ja/html/_static/basic.css +0 -509
  188. data/vendor/local/share/groonga/doc/ja/html/_static/default.css +0 -277
  189. data/vendor/local/share/groonga/doc/ja/html/_static/doctools.js +0 -247
  190. data/vendor/local/share/groonga/doc/ja/html/_static/file.png +0 -0
  191. data/vendor/local/share/groonga/doc/ja/html/_static/jquery.js +0 -6240
  192. data/vendor/local/share/groonga/doc/ja/html/_static/minus.png +0 -0
  193. data/vendor/local/share/groonga/doc/ja/html/_static/plus.png +0 -0
  194. data/vendor/local/share/groonga/doc/ja/html/_static/pygments.css +0 -61
  195. data/vendor/local/share/groonga/doc/ja/html/_static/searchtools.js +0 -518
  196. data/vendor/local/share/groonga/doc/ja/html/_static/sidebar.js +0 -147
  197. data/vendor/local/share/groonga/doc/ja/html/_static/underscore.js +0 -16
  198. data/vendor/local/share/groonga/doc/ja/html/characteristic.html +0 -162
  199. data/vendor/local/share/groonga/doc/ja/html/commands.html +0 -139
  200. data/vendor/local/share/groonga/doc/ja/html/commands/cache_limit.html +0 -173
  201. data/vendor/local/share/groonga/doc/ja/html/commands/check.html +0 -285
  202. data/vendor/local/share/groonga/doc/ja/html/commands/clearlock.html +0 -180
  203. data/vendor/local/share/groonga/doc/ja/html/commands/column_create.html +0 -210
  204. data/vendor/local/share/groonga/doc/ja/html/commands/column_list.html +0 -220
  205. data/vendor/local/share/groonga/doc/ja/html/commands/column_remove.html +0 -183
  206. data/vendor/local/share/groonga/doc/ja/html/commands/define_selector.html +0 -221
  207. data/vendor/local/share/groonga/doc/ja/html/commands/defrag.html +0 -177
  208. data/vendor/local/share/groonga/doc/ja/html/commands/delete.html +0 -182
  209. data/vendor/local/share/groonga/doc/ja/html/commands/dump.html +0 -177
  210. data/vendor/local/share/groonga/doc/ja/html/commands/load.html +0 -208
  211. data/vendor/local/share/groonga/doc/ja/html/commands/log_level.html +0 -187
  212. data/vendor/local/share/groonga/doc/ja/html/commands/log_put.html +0 -190
  213. data/vendor/local/share/groonga/doc/ja/html/commands/log_reopen.html +0 -188
  214. data/vendor/local/share/groonga/doc/ja/html/commands/quit.html +0 -156
  215. data/vendor/local/share/groonga/doc/ja/html/commands/select.html +0 -331
  216. data/vendor/local/share/groonga/doc/ja/html/commands/shutdown.html +0 -156
  217. data/vendor/local/share/groonga/doc/ja/html/commands/status.html +0 -179
  218. data/vendor/local/share/groonga/doc/ja/html/commands/suggest.html +0 -191
  219. data/vendor/local/share/groonga/doc/ja/html/commands/table_create.html +0 -222
  220. data/vendor/local/share/groonga/doc/ja/html/commands/table_list.html +0 -202
  221. data/vendor/local/share/groonga/doc/ja/html/commands/table_remove.html +0 -173
  222. data/vendor/local/share/groonga/doc/ja/html/commands/view_add.html +0 -175
  223. data/vendor/local/share/groonga/doc/ja/html/commands_not_implemented/add.html +0 -180
  224. data/vendor/local/share/groonga/doc/ja/html/commands_not_implemented/get.html +0 -161
  225. data/vendor/local/share/groonga/doc/ja/html/commands_not_implemented/set.html +0 -182
  226. data/vendor/local/share/groonga/doc/ja/html/developer.html +0 -118
  227. data/vendor/local/share/groonga/doc/ja/html/developer/com.html +0 -136
  228. data/vendor/local/share/groonga/doc/ja/html/developer/document.html +0 -159
  229. data/vendor/local/share/groonga/doc/ja/html/developer/query.html +0 -336
  230. data/vendor/local/share/groonga/doc/ja/html/developer/test.html +0 -220
  231. data/vendor/local/share/groonga/doc/ja/html/execfile.html +0 -370
  232. data/vendor/local/share/groonga/doc/ja/html/expr.html +0 -157
  233. data/vendor/local/share/groonga/doc/ja/html/functions.html +0 -122
  234. data/vendor/local/share/groonga/doc/ja/html/functions/edit_distance.html +0 -162
  235. data/vendor/local/share/groonga/doc/ja/html/functions/geo_distance.html +0 -170
  236. data/vendor/local/share/groonga/doc/ja/html/functions/geo_in_circle.html +0 -173
  237. data/vendor/local/share/groonga/doc/ja/html/functions/geo_in_rectangle.html +0 -172
  238. data/vendor/local/share/groonga/doc/ja/html/functions/now.html +0 -152
  239. data/vendor/local/share/groonga/doc/ja/html/functions/rand.html +0 -159
  240. data/vendor/local/share/groonga/doc/ja/html/genindex.html +0 -227
  241. data/vendor/local/share/groonga/doc/ja/html/grnslap.html +0 -183
  242. data/vendor/local/share/groonga/doc/ja/html/grntest.html +0 -368
  243. data/vendor/local/share/groonga/doc/ja/html/http.html +0 -163
  244. data/vendor/local/share/groonga/doc/ja/html/index.html +0 -291
  245. data/vendor/local/share/groonga/doc/ja/html/install.html +0 -228
  246. data/vendor/local/share/groonga/doc/ja/html/news.html +0 -310
  247. data/vendor/local/share/groonga/doc/ja/html/objects.inv +0 -0
  248. data/vendor/local/share/groonga/doc/ja/html/process.html +0 -120
  249. data/vendor/local/share/groonga/doc/ja/html/pseudo_column.html +0 -147
  250. data/vendor/local/share/groonga/doc/ja/html/reference.html +0 -174
  251. data/vendor/local/share/groonga/doc/ja/html/search.html +0 -96
  252. data/vendor/local/share/groonga/doc/ja/html/searchindex.js +0 -1
  253. data/vendor/local/share/groonga/doc/ja/html/tutorial.html +0 -172
  254. data/vendor/local/share/groonga/doc/ja/html/tutorial/tutorial01.html +0 -388
  255. data/vendor/local/share/groonga/doc/ja/html/tutorial/tutorial02.html +0 -214
  256. data/vendor/local/share/groonga/doc/ja/html/tutorial/tutorial03.html +0 -183
  257. data/vendor/local/share/groonga/doc/ja/html/tutorial/tutorial04.html +0 -212
  258. data/vendor/local/share/groonga/doc/ja/html/tutorial/tutorial05.html +0 -169
  259. data/vendor/local/share/groonga/doc/ja/html/tutorial/tutorial06.html +0 -209
  260. data/vendor/local/share/groonga/doc/ja/html/tutorial/tutorial07.html +0 -212
  261. data/vendor/local/share/groonga/doc/ja/html/tutorial/tutorial08.html +0 -139
  262. data/vendor/local/share/groonga/doc/ja/html/tutorial/tutorial09.html +0 -114
  263. data/vendor/local/share/groonga/doc/ja/html/tutorial/tutorial10.html +0 -458
  264. data/vendor/local/share/groonga/doc/ja/html/type.html +0 -217
  265. data/vendor/local/share/groonga/doc/ja/source/__init__.py +0 -0
  266. data/vendor/local/share/groonga/doc/ja/source/characteristic.txt +0 -56
  267. data/vendor/local/share/groonga/doc/ja/source/commands.txt +0 -10
  268. data/vendor/local/share/groonga/doc/ja/source/commands/cache_limit.txt +0 -52
  269. data/vendor/local/share/groonga/doc/ja/source/commands/check.txt +0 -164
  270. data/vendor/local/share/groonga/doc/ja/source/commands/clearlock.txt +0 -61
  271. data/vendor/local/share/groonga/doc/ja/source/commands/column_create.txt +0 -93
  272. data/vendor/local/share/groonga/doc/ja/source/commands/column_list.txt +0 -97
  273. data/vendor/local/share/groonga/doc/ja/source/commands/column_remove.txt +0 -58
  274. data/vendor/local/share/groonga/doc/ja/source/commands/define_selector.txt +0 -114
  275. data/vendor/local/share/groonga/doc/ja/source/commands/defrag.txt +0 -57
  276. data/vendor/local/share/groonga/doc/ja/source/commands/delete.txt +0 -68
  277. data/vendor/local/share/groonga/doc/ja/source/commands/dump.txt +0 -62
  278. data/vendor/local/share/groonga/doc/ja/source/commands/load.txt +0 -98
  279. data/vendor/local/share/groonga/doc/ja/source/commands/log_level.txt +0 -65
  280. data/vendor/local/share/groonga/doc/ja/source/commands/log_put.txt +0 -69
  281. data/vendor/local/share/groonga/doc/ja/source/commands/log_reopen.txt +0 -66
  282. data/vendor/local/share/groonga/doc/ja/source/commands/quit.txt +0 -38
  283. data/vendor/local/share/groonga/doc/ja/source/commands/select.txt +0 -247
  284. data/vendor/local/share/groonga/doc/ja/source/commands/shutdown.txt +0 -38
  285. data/vendor/local/share/groonga/doc/ja/source/commands/status.txt +0 -59
  286. data/vendor/local/share/groonga/doc/ja/source/commands/table_create.txt +0 -111
  287. data/vendor/local/share/groonga/doc/ja/source/commands/table_list.txt +0 -87
  288. data/vendor/local/share/groonga/doc/ja/source/commands/table_remove.txt +0 -50
  289. data/vendor/local/share/groonga/doc/ja/source/commands/view_add.txt +0 -53
  290. data/vendor/local/share/groonga/doc/ja/source/commands_not_implemented/add.txt +0 -102
  291. data/vendor/local/share/groonga/doc/ja/source/commands_not_implemented/get.txt +0 -78
  292. data/vendor/local/share/groonga/doc/ja/source/commands_not_implemented/set.txt +0 -103
  293. data/vendor/local/share/groonga/doc/ja/source/conf.py +0 -265
  294. data/vendor/local/share/groonga/doc/ja/source/developer.txt +0 -10
  295. data/vendor/local/share/groonga/doc/ja/source/developer/com.txt +0 -18
  296. data/vendor/local/share/groonga/doc/ja/source/developer/document.txt +0 -38
  297. data/vendor/local/share/groonga/doc/ja/source/developer/query.txt +0 -212
  298. data/vendor/local/share/groonga/doc/ja/source/developer/test.txt +0 -114
  299. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-1.log +0 -6
  300. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-10.log +0 -5
  301. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-11.log +0 -5
  302. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-12.log +0 -5
  303. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-13.log +0 -5
  304. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-14.log +0 -9
  305. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-15.log +0 -5
  306. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-16.log +0 -5
  307. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-17.log +0 -5
  308. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-2.log +0 -5
  309. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-3.log +0 -5
  310. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-4.log +0 -7
  311. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-5.log +0 -5
  312. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-6.log +0 -5
  313. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-7.log +0 -16
  314. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-8.log +0 -5
  315. data/vendor/local/share/groonga/doc/ja/source/example/tutorial01-9.log +0 -5
  316. data/vendor/local/share/groonga/doc/ja/source/example/tutorial02-1.log +0 -8
  317. data/vendor/local/share/groonga/doc/ja/source/example/tutorial02-2.log +0 -6
  318. data/vendor/local/share/groonga/doc/ja/source/example/tutorial02-3.log +0 -12
  319. data/vendor/local/share/groonga/doc/ja/source/example/tutorial03-1.log +0 -18
  320. data/vendor/local/share/groonga/doc/ja/source/example/tutorial03-2.log +0 -10
  321. data/vendor/local/share/groonga/doc/ja/source/example/tutorial03-3.log +0 -10
  322. data/vendor/local/share/groonga/doc/ja/source/example/tutorial04-1.log +0 -5
  323. data/vendor/local/share/groonga/doc/ja/source/example/tutorial04-2.log +0 -7
  324. data/vendor/local/share/groonga/doc/ja/source/example/tutorial04-3.log +0 -7
  325. data/vendor/local/share/groonga/doc/ja/source/example/tutorial04-4.log +0 -13
  326. data/vendor/local/share/groonga/doc/ja/source/example/tutorial04-5.log +0 -5
  327. data/vendor/local/share/groonga/doc/ja/source/example/tutorial04-6.log +0 -5
  328. data/vendor/local/share/groonga/doc/ja/source/example/tutorial04-7.log +0 -5
  329. data/vendor/local/share/groonga/doc/ja/source/example/tutorial05-1.log +0 -24
  330. data/vendor/local/share/groonga/doc/ja/source/example/tutorial05-2.log +0 -5
  331. data/vendor/local/share/groonga/doc/ja/source/example/tutorial05-3.log +0 -5
  332. data/vendor/local/share/groonga/doc/ja/source/example/tutorial05-4.log +0 -5
  333. data/vendor/local/share/groonga/doc/ja/source/example/tutorial05-5.log +0 -5
  334. data/vendor/local/share/groonga/doc/ja/source/example/tutorial05-6.log +0 -5
  335. data/vendor/local/share/groonga/doc/ja/source/example/tutorial06-1.log +0 -25
  336. data/vendor/local/share/groonga/doc/ja/source/example/tutorial06-2.log +0 -9
  337. data/vendor/local/share/groonga/doc/ja/source/example/tutorial06-3.log +0 -21
  338. data/vendor/local/share/groonga/doc/ja/source/example/tutorial06-4.log +0 -7
  339. data/vendor/local/share/groonga/doc/ja/source/example/tutorial06-5.log +0 -5
  340. data/vendor/local/share/groonga/doc/ja/source/example/tutorial07-1.log +0 -22
  341. data/vendor/local/share/groonga/doc/ja/source/example/tutorial07-2.log +0 -9
  342. data/vendor/local/share/groonga/doc/ja/source/example/tutorial07-3.log +0 -20
  343. data/vendor/local/share/groonga/doc/ja/source/example/tutorial07-4.log +0 -9
  344. data/vendor/local/share/groonga/doc/ja/source/example/tutorial08-1.log +0 -14
  345. data/vendor/local/share/groonga/doc/ja/source/example/tutorial10-1.log +0 -5
  346. data/vendor/local/share/groonga/doc/ja/source/example/tutorial10-10.log +0 -5
  347. data/vendor/local/share/groonga/doc/ja/source/example/tutorial10-2.log +0 -5
  348. data/vendor/local/share/groonga/doc/ja/source/example/tutorial10-3.log +0 -5
  349. data/vendor/local/share/groonga/doc/ja/source/example/tutorial10-4.log +0 -5
  350. data/vendor/local/share/groonga/doc/ja/source/example/tutorial10-5.log +0 -5
  351. data/vendor/local/share/groonga/doc/ja/source/example/tutorial10-6.log +0 -5
  352. data/vendor/local/share/groonga/doc/ja/source/example/tutorial10-7.log +0 -5
  353. data/vendor/local/share/groonga/doc/ja/source/example/tutorial10-8.log +0 -5
  354. data/vendor/local/share/groonga/doc/ja/source/example/tutorial10-9.log +0 -5
  355. data/vendor/local/share/groonga/doc/ja/source/execfile.txt +0 -226
  356. data/vendor/local/share/groonga/doc/ja/source/expr.txt +0 -43
  357. data/vendor/local/share/groonga/doc/ja/source/functions.txt +0 -10
  358. data/vendor/local/share/groonga/doc/ja/source/functions/edit_distance.txt +0 -48
  359. data/vendor/local/share/groonga/doc/ja/source/functions/geo_distance.txt +0 -51
  360. data/vendor/local/share/groonga/doc/ja/source/functions/geo_in_circle.txt +0 -54
  361. data/vendor/local/share/groonga/doc/ja/source/functions/geo_in_rectangle.txt +0 -55
  362. data/vendor/local/share/groonga/doc/ja/source/functions/now.txt +0 -34
  363. data/vendor/local/share/groonga/doc/ja/source/functions/rand.txt +0 -41
  364. data/vendor/local/share/groonga/doc/ja/source/grnslap.txt +0 -64
  365. data/vendor/local/share/groonga/doc/ja/source/grntest.txt +0 -259
  366. data/vendor/local/share/groonga/doc/ja/source/http.txt +0 -52
  367. data/vendor/local/share/groonga/doc/ja/source/index.txt +0 -21
  368. data/vendor/local/share/groonga/doc/ja/source/install.txt +0 -114
  369. data/vendor/local/share/groonga/doc/ja/source/news.txt +0 -199
  370. data/vendor/local/share/groonga/doc/ja/source/process.txt +0 -12
  371. data/vendor/local/share/groonga/doc/ja/source/pseudo_column.txt +0 -38
  372. data/vendor/local/share/groonga/doc/ja/source/rdoc.py +0 -762
  373. data/vendor/local/share/groonga/doc/ja/source/reference.txt +0 -14
  374. data/vendor/local/share/groonga/doc/ja/source/tutorial.txt +0 -10
  375. data/vendor/local/share/groonga/doc/ja/source/tutorial/tutorial01.txt +0 -293
  376. data/vendor/local/share/groonga/doc/ja/source/tutorial/tutorial02.txt +0 -100
  377. data/vendor/local/share/groonga/doc/ja/source/tutorial/tutorial03.txt +0 -72
  378. data/vendor/local/share/groonga/doc/ja/source/tutorial/tutorial04.txt +0 -111
  379. data/vendor/local/share/groonga/doc/ja/source/tutorial/tutorial05.txt +0 -65
  380. data/vendor/local/share/groonga/doc/ja/source/tutorial/tutorial06.txt +0 -91
  381. data/vendor/local/share/groonga/doc/ja/source/tutorial/tutorial07.txt +0 -92
  382. data/vendor/local/share/groonga/doc/ja/source/tutorial/tutorial08.txt +0 -53
  383. data/vendor/local/share/groonga/doc/ja/source/tutorial/tutorial09.txt +0 -9
  384. data/vendor/local/share/groonga/doc/ja/source/tutorial/tutorial10.txt +0 -486
  385. data/vendor/local/share/groonga/doc/ja/source/type.txt +0 -118
  386. data/vendor/local/share/groonga/doc/ja/source/update_execution_example.py +0 -113
  387. data/vendor/local/share/man/man1/groonga.1 +0 -5498
@@ -0,0 +1,68 @@
1
+ = はじめに
2
+
3
+ == 名前
4
+
5
+ rroonga
6
+
7
+ == 説明
8
+
9
+ 全文検索機能とカラムストア機能を提供するgroongaのRubyバイン
10
+ ディングです。
11
+
12
+ groongaのいわゆるDB-API層をRubyから使うための拡張ライブラリで
13
+ す。groongaのAPIをそのままRubyレベルに提供するのではなく、
14
+ Rubyらしく読み書きしやすいAPIとして提供します。高速・高機能な
15
+ groongaをRubyらしい書き方で利用できます。
16
+
17
+ groongaに関する情報は以下を参照して下さい。
18
+
19
+ * groonga: http://groonga.org/
20
+
21
+ == 作者
22
+
23
+ Kouhei Sutou:: <tt><kou@clear-code.com></tt>
24
+ Tasuku SUENAGA:: <tt><a@razil.jp></tt>
25
+ daijiro:: <tt><morita@razil.jp></tt>
26
+ Yuto HAYAMIZU:: <tt><y.hayamizu@gmail.com></tt>
27
+ SHIDARA Yoji:: <tt><dara@shidara.net></tt>
28
+
29
+ == ライセンス
30
+
31
+ LGPL 2.1です。詳しくはlicense/LGPLを見てください。
32
+
33
+ (コントリビュートされたパッチなども含み、Kouhei Sutouが
34
+ ライセンスを変更する権利を持ちます。)
35
+
36
+ == 依存ソフトウェア
37
+
38
+ * Ruby >= 1.8 (1.9.2対応)
39
+ * groonga >= 1.1.0
40
+
41
+ == インストール
42
+
43
+ % sudo gem install rroonga
44
+
45
+ == ドキュメント
46
+
47
+ http://groonga.rubyforge.org/rroonga/
48
+
49
+ == メーリングリスト
50
+
51
+ 質問、要望、バグ報告などはgroongaのMLにお願いします。
52
+
53
+ http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
54
+
55
+ == 感謝
56
+
57
+ * 森さん: 最新groonga対応パッチをくれました。
58
+ * グニャラくん: バグレポートしてくれました。
59
+ * にくさん: バグレポートしてくれました。
60
+ * daraさん:
61
+ * テストを書いてくれました。
62
+ * バグを直してくれました。
63
+ * id:mat_akiさん: チュートリアルのバグを教えてくれました。
64
+ * @yune_kotomiさん: バグレポートしてくれました。
65
+ * 咳さん: バグレポートしてくれました。
66
+ * 小野マトペさん: バグレポートしてくれました。
67
+ * @kamipoさん: バグレポートしてくれました。
68
+ * ongaeshiさん: Windows上でgemをビルドするためのパッチをくれました。
@@ -0,0 +1,68 @@
1
+ = README
2
+
3
+ == Name
4
+
5
+ rroonga
6
+
7
+ == Description
8
+
9
+ Ruby bindings for groonga that provides full text search and
10
+ column store features.
11
+
12
+ rroonga is a extension library to use groonga's DB-API
13
+ layer. rroonga provides Rubyish readable and writable
14
+ API. You can use groonga's first and highly functional
15
+ features from Ruby.
16
+
17
+ See the following URL about groonga.
18
+
19
+ * groonga: http://groonga.org/
20
+
21
+ == Authors
22
+
23
+ Kouhei Sutou:: <tt><kou@clear-code.com></tt>
24
+ Tasuku SUENAGA:: <tt><a@razil.jp></tt>
25
+ daijiro:: <tt><morita@razil.jp></tt>
26
+ Yuto HAYAMIZU:: <tt><y.hayamizu@gmail.com></tt>
27
+ SHIDARA Yoji:: <tt><dara@shidara.net></tt>
28
+
29
+ == License
30
+
31
+ LGPL 2.1. See license/LGPL for details.
32
+
33
+ (Kouhei Sutou has a right to change the license
34
+ inclidng contributed patches.)
35
+
36
+ == Dependencies
37
+
38
+ * Ruby >= 1.8 (including 1.9.2)
39
+ * groonga >= 1.1.0
40
+
41
+ == Install
42
+
43
+ % sudo gem install rroonga
44
+
45
+ == Documents
46
+
47
+ Japanese only. Sorry.
48
+
49
+ http://groonga.rubyforge.org/rroonga/
50
+
51
+ == Mailing list
52
+
53
+ http://rubyforge.org/mailman/listinfo/groonga-users-en
54
+
55
+ == Thanks
56
+
57
+ * mori: sent patches to support the latest groonga.
58
+ * Tasuku SUENAGA: sent bug reports.
59
+ * niku: sent bug reports.
60
+ * dara:
61
+ * wrote tests.
62
+ * fixed bugs.
63
+ * id:mat_aki: sent bug reports.
64
+ * @yune_kotomi: sent a bug report.
65
+ * m_seki: sent bug reports.
66
+ * ono matope: sent bug reports.
67
+ * @kamipo: send a bug report.
68
+ * ongaeshi: sent a patch to build gem on Windows.
@@ -0,0 +1,285 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ = grn式 (grn_expr)
4
+
5
+
6
+ == 名前
7
+
8
+ grn式 - 検索条件やデータベースへの操作を表現する文字列の形式。(読み方:"ぐるんしき")
9
+
10
+
11
+ == 書式
12
+
13
+ grn式はquery形式とscript形式のいずれかによって表現することができます。
14
+
15
+ query形式
16
+
17
+ [条件式]
18
+ 以下の条件式が使用できます。
19
+
20
+ [文字列]
21
+ 全文検索条件(デフォルト検索対象カラムの値が指定された文字列を含んでいる)
22
+
23
+ ["文字列"]
24
+ フレーズ検索条件(デフォルト検索対象カラムの値が指定されたフレーズを含んでいる)
25
+
26
+ [カラム名:値]
27
+ 一致条件(カラム値 == 値)
28
+
29
+ [カラム名:!値]
30
+ 不一致条件(カラム値 != 値)
31
+
32
+ [カラム名:<値]
33
+ 比較条件(カラム値 < 値)
34
+
35
+ [カラム名:>値]
36
+ 比較条件(カラム値 > 値)
37
+
38
+ [カラム名:<=値]
39
+ 比較条件(カラム値 <= 値)
40
+
41
+ [カラム名:>=値]
42
+ 比較条件(カラム値 >= 値)
43
+
44
+ [カラム名:@文字列]
45
+ 全文検索条件(カラム値が指定された文字列を含んでいる)
46
+
47
+ [補助演算子 [1]]
48
+ 全文検索条件の挙動を制御する以下の演算子が指定できます。
49
+
50
+ [~文字列]
51
+ 文字列を含んでいた場合は、そのレコードのスコアを下げます。
52
+
53
+ [<文字列]
54
+ 文字列を含んでいた場合に加算されるスコアの値を小さくします。
55
+
56
+ [>文字列]
57
+ 文字列を含んでいた場合に加算されるスコアの値を大きくします。
58
+
59
+ [文字列*]
60
+ 文字列に前方一致する条件を示します。
61
+
62
+ [*S[数値]"文字列"]
63
+ 文字列と関連する文書を検索します。文字列から抽出する特徴語の数を数値に指定します。
64
+
65
+ [*N[数値]"文字列"]
66
+ 文字列に含まれる複数の語が、近傍に含まれる文書を検索します。近傍の範囲の上限とな
67
+ る語数を数値に指定します。N-gramの場合は、文字数を指定します。
68
+
69
+ [結合演算子]
70
+ 複数の条件式を結合するために以下の演算子が使用できる。演算子を伴わずに複数の条件式 が空白('
71
+ ')区切りで指定された場合は、デフォルトの結合演算子が指定されたものとみな される。
72
+
73
+ [a OR b]
74
+ 論理和(aとbといずれかの条件がマッチする)
75
+
76
+ [a + b]
77
+ 論理積(aとbの両方がマッチする)
78
+
79
+ [a - b]
80
+ aにマッチし、bにはマッチしない
81
+
82
+ [( )]
83
+ 複数の条件をまとめる
84
+
85
+ [プラグマ [2]]
86
+ query形式文字列の先頭に、処理方法を指定するプラグマを埋め込むことができます。
87
+
88
+ プラグマは必ずクエリ文字列の冒頭に存在しなければなりません。(先頭に空白を入れては いけません)
89
+
90
+ 一つのクエリに複数のプラグマを指定することができます。
91
+
92
+ 複数のプラグマを指定する場合は、間に空白を入れてはいけません。
93
+
94
+ [*E数値1[,数値2]]
95
+ 検索結果の数が数値1よりも小さい場合、完全一致→非わかち書き→部分一致の順に自動
96
+ 的に検索処理方法を切り替えます。完全一致でヒットした文書と比べて非わかち書き一致、
97
+ 部分一致でヒットした文書には数値2分だけ小さいスコアを付与します。数値2を省略した
98
+ 場合は既定値(=2)と解釈されます。数値1に負の数を指定した場合は以下のように処理し ます。
99
+
100
+ -1
101
+
102
+ 完全一致検索のみを行う
103
+
104
+ -2
105
+
106
+ 非わかち書き検索のみを行う
107
+
108
+ -3
109
+
110
+ 完全一致検索と非わかち書き検索のみを行う
111
+
112
+ -4
113
+
114
+ 部分一致検索のみを行う
115
+
116
+ -5
117
+
118
+ 完全一致検索と部分一致検索のみを行う
119
+
120
+ -6
121
+
122
+ 非わかち書き検索と部分一致検索のみを行う
123
+
124
+ -7
125
+
126
+ 完全一致検索,非わかち書き検索,部分一致検索の全てを行う
127
+
128
+ 例:
129
+
130
+ *E10,3
131
+
132
+ 検索結果数が10件以下だった場合に検索処理方法を順次切り替え、スコアを3ずつ小さ くします。
133
+
134
+ [*D演算子]
135
+ 結合演算子の既定値(演算子を省略した場合にどの演算を行うか)を指定します。指定できる演 算子は、OR, +, - のいずれかです。
136
+
137
+ 例1:
138
+
139
+ *D+ abc def
140
+
141
+ abcとdefを両方含む文書を検索します。
142
+
143
+ 例2:
144
+
145
+ *DOR abc def
146
+
147
+ abcとdefのいずれかを含む文書を検索します。
148
+
149
+ [*W[数値[:重み][,数値[:重み]]...]
150
+ 数値で指定されたセクション番号のみを対象に検索します。セクションごとに検索スコア
151
+ の倍数を指定することができます。重みは、省略された場合1となります。負の重みも指 定することができます。
152
+
153
+ script形式 [3]
154
+
155
+ ECMAScript風の構文で検索条件やレコードへの操作を記述します。
156
+
157
+ 式中のIDENTIFIER(識別子)は、以下のいずれかを指します。
158
+
159
+ [引数名]
160
+ grn式が受け取る引数の名前
161
+
162
+ [カラム名]
163
+ 操作対象としているレコードのカラム名
164
+
165
+ [型名・関数名・テーブル名]
166
+ データベースに定義された型・テーブル・関数の名前
167
+
168
+
169
+ == 説明
170
+
171
+ grn式は、検索条件やデータベースへの操作を表現するために使用される文字列の形式です。
172
+
173
+ selectやloadなどのいくつかの組込コマンドや、API関数grn_table_select()などで使用されます。grn式はquery
174
+ 形式とscript形式という2種類の方式で記述することができます。query形式は、多くのweb検索エンジンなどで検索フォームにユーザが指定
175
+ 可能なクエリ文字列の書式に合わせた形式です。script形式は、ECMAScriptの構文から式(expression)以下の構文要素を抜粋
176
+ した形式になっており、文(statement)や制御構造などは表現できません。
177
+
178
+ query形式のgrn式もscript形式のgrn式も、共通の中間形式に翻訳された上で処理されますので、処理速度や効率には差違はありません。
179
+ 記述できる処理の範囲はscript形式の方がquery形式より広くなっています。たとえば更新系の操作はscript形式のみで記述できます。
180
+
181
+ DB-APIレイヤでは、異なる形式で記述された複数のgrn式を結合することも可能です。
182
+
183
+
184
+ == 例
185
+
186
+ query形式でcolumn1の値が'hoge'に等しいという条件
187
+
188
+ column1:hoge
189
+
190
+ script形式でcolumn1の値が'hoge'に等しいという条件
191
+
192
+ column1 == "hoge"
193
+
194
+
195
+ == 構文
196
+
197
+ query形式のgrn式で有効な式の構文を拡張BNF記法で示します。
198
+
199
+ query ::= query_element
200
+ | ( query query_element )
201
+ | ( query "+" query_element )
202
+ | ( query "-" query_element )
203
+ | ( query "OR" query_element )
204
+ query_element ::= STRING
205
+ | ( "(" query ")" )
206
+ | ( IDENTIFIER relative_operator query_element )
207
+ relative_operator ::= ( ":" | ":!" | ":<" | ":>" | ":<=" | ":>=" | ":@" )
208
+
209
+ script形式のgrn式で有効な式の構文を拡張BNF記法で示します。
210
+
211
+ expression ::= assignment_expression
212
+ expression ::= ( expression "," assignment_expression )
213
+ assignment_expression ::= conditional_expression
214
+ | ( lefthand_side_expression assign_operator assignment_expression )
215
+ assign_operator ::= ( "=" | "*=" | "/=" | "%=" | "+=" | "-=" | "<<=" | ">>=" | ">>>=" | "&=" | "^=" | "|=" )
216
+ conditional_expression ::= logical_or_expression
217
+ | ( logical_or_expression "?" assignment_expression ":" assignment_expression )
218
+ logical_or_expression ::= logical_and_expression
219
+ | ( logical_or_expression "||" logical_and_expression )
220
+ logical_and_expression ::= bitwise_or_expression
221
+ | ( logical_and_expression logical_and_operator bitwise_or_expression )
222
+ logical_and_operator ::= ( "&&" | "&!" )
223
+ bitwise_or_expression ::= bitwise_xor_expression
224
+ | ( bitwise_or_expression "|" bitwise_xor_expression )
225
+ bitwise_xor_expression ::= bitwise_and_expression
226
+ | ( bitwise_xor_expression "^" bitwise_and_expression )
227
+ bitwise_and_expression ::= equality_expression
228
+ | bitwise_and_expression "&" equality_expression )
229
+ equality_expression ::= relational_expression
230
+ | ( equality_expression equality_operator relational_expression )
231
+ equality_operator ::= ( "==" | "!=" )
232
+ relational_expression ::= shift_expression
233
+ | ( relational_expression relational_operator shift_expression )
234
+ relational_operator ::= ( "<" | ">" | "<=" | ">=" | "in" | "@" )
235
+ shift_expression ::= additive_expression
236
+ | ( shift_expression shift_operator additive_expression )
237
+ shift_operator ::= ( "<<" | ">>" | ">>>" )
238
+ additive_expression ::= multiplicative_expression
239
+ | ( additive_expression additive_operator multiplicative_expression )
240
+ additive_operator ::= ( "+" | "-" )
241
+ multiplicative_expression ::= unary_expression
242
+ | ( multiplicative_expression multiplicative_operator unary_expression )
243
+ multiplicative_operator ::= ( "*" | "/" | "%" )
244
+ unary_expression ::= postfix_expression
245
+ | ( unary_operator unary_expression )
246
+ unary_operator ::= ( "delete" : "++" : "--" : "+" : "-" : "!" : "~" )
247
+ postfix_expression ::= lefthand_side_expression
248
+ | ( lefthand_side_expression postfix_operator )
249
+ postfix_operator ::= ( "++" | "--" )
250
+ lefthand_side_expression ::= (call_expression | member_expression)
251
+ call_expression ::= member_expression arguments
252
+ member_expression ::= primary_expression
253
+ member_expression ::= member_expression member_expression_part
254
+ primary_expression ::= object_literal
255
+ | ( "(" expression ")" )
256
+ | IDENTIFIER
257
+ | array_literal
258
+ | DECIMAL
259
+ | HEX_INTEGER
260
+ | STRING
261
+ | "true"
262
+ | "false
263
+ | "null"
264
+ array_literal ::= ( "[" elision "]" )
265
+ | ( "[" `element_list elision` "]" )
266
+ | ( "[" element_list "]" )
267
+ elision ::= "," | ( elision "," )
268
+ element_list ::= assignment_expression
269
+ | ( elision assignment_expression )
270
+ | ( element_list elision assignment_expression )
271
+ object_literal ::= ( "{" property_name_and_value_list "}" )
272
+ property_name_and_value_list ::= ( property_name_and_value_list "," property_name_and_value )
273
+ property_name_and_value ::= ( property_name ":" assignment_expression )
274
+ property_name ::= IDENTIFIER | STRING | DECIMAL
275
+ member_expression_part ::= "[" expression "]" | ( "." IDENTIFIER )
276
+ arguments ::= ( "(" argument_list ")" )
277
+ argument_list ::= assignment_expression | ( argument_list "," assignment_expression )
278
+
279
+ -[ 脚注 ]-
280
+
281
+ [1] 補助演算子はv1.0でサポートされます。
282
+
283
+ [2] プラグマはv1.0でサポートされます。
284
+
285
+ [3] script形式のgrn式はv1.0でサポートされます。
@@ -7,7 +7,7 @@ rroongaの操作方法を紹介します。
7
7
 
8
8
  == インストール
9
9
 
10
- Ruby/groongaはRubyGemsでインストールできます。
10
+ rroongaはRubyGemsでインストールできます。
11
11
 
12
12
  % sudo gem install rroonga
13
13
 
@@ -55,19 +55,23 @@ groongaには以下の3種類のテーブルがあります。
55
55
  ここではハッシュテーブルを利用して、<tt>Items</tt>という名前のテー
56
56
  ブルを作成します。キーは文字列とします。
57
57
 
58
- >> items = Groonga::Hash.create(:name => "Items", :key_type => "ShortText")
59
- => #<Groonga::Hash ...>
60
-
58
+ >> Groonga::Schema.create_table("Items", :type => :hash)
59
+ => [...]
61
60
 
62
61
  これで<tt>Items</tt>という名前のテーブルが作成できました。
63
62
 
63
+ 定義したテーブルはGroonga.[]で参照できます。
64
+
65
+ >> items = Groonga["Items"]
66
+ => #<Groonga::Hash ...>
67
+
64
68
  テーブルはRubyのHashのように扱えます。
65
69
 
66
70
  例えば、以下のように+size+でテーブルに登録されているレコード
67
71
  の件数を取得できます。
68
72
 
69
73
  >> items.size
70
- 0
74
+ => 0
71
75
 
72
76
  == レコードを追加する
73
77
 
@@ -75,7 +79,7 @@ groongaには以下の3種類のテーブルがあります。
75
79
 
76
80
  >> items.add("http://ja.wikipedia.org/wiki/Ruby")
77
81
  => #<Groonga::Record ...>
78
- >> items.add("http://www.ruby-lang.org/")
82
+ >> items.add("http://www.ruby-lang.org/ja/")
79
83
  => #<Groonga::Record ...>
80
84
 
81
85
  件数を確認すると確かに2件増えています。
@@ -85,7 +89,7 @@ groongaには以下の3種類のテーブルがあります。
85
89
 
86
90
  主キーを指定してレコードを取り出す時には以下のようにします。
87
91
 
88
- >> items.find("http://ja.wikipedia.org/wiki/Ruby")
92
+ >> items["http://ja.wikipedia.org/wiki/Ruby"]
89
93
  => #<Groonga::Record ...>
90
94
 
91
95
  == 全文検索を行う
@@ -93,42 +97,52 @@ groongaには以下の3種類のテーブルがあります。
93
97
  各itemのタイトル文字列を登録して、全文検索できるようにしてみ
94
98
  ましょう。
95
99
 
96
- まず<tt>Items</tt>テーブルに+title+という名前のカラムを追加します。
100
+ まず<tt>Items</tt>テーブルに+title+という名前のカラムを追加し
101
+ ます。ここでは、<tt>Text</tt>型のデータを持つカラムとして定義
102
+ します。
97
103
 
98
- >> title_column = items.define_column("title", "Text")
99
- => #<Groonga::VarSizeColumn ...>
104
+ >> Groonga::Schema.change_table("Items") do |table|
105
+ ?> table.text("title")
106
+ >> end
107
+ => [...]
100
108
 
101
- 2番目の引数は、追加するカラムのデータ型を示しています。
102
- <tt><int></tt>、<tt>Text</tt>、<tt><longtext></tt>等の型が基本型として用意されて
103
- います。
109
+ 定義したカラムは「#{テーブル名}.#{カラム名}」という名前になります。
110
+ テーブルと同じようにGroonga.[]で参照できます。
104
111
 
105
- 全文検索するためには、文字列を分解して得られる各単語を格納す
106
- るためのテーブルを別途しなければなりません。ここではTermsと
107
- いう名前でテーブルを定義します。
112
+ >> title_column = Groonga["Items.title"]
113
+ => #<Groonga::VariableSizeColumn ...>
108
114
 
109
- >> terms = Groonga::Hash.create(:name => "Terms",
110
- :key_type => "ShortText",
111
- :default_tokenizer => "TokenBigram")
112
- => #<Groonga::Hash ...>
115
+ 全文検索するために、文字列を分解して得られる各単語を格納する
116
+ ためのテーブルを別途用意します。ここではTermsという名前でテー
117
+ ブルを定義します。
118
+
119
+ >> Groonga::Schema.create_table("Terms",
120
+ ?> :type => :patricia_trie,
121
+ ?> :key_normalize => true,
122
+ ?> :default_tokenizer => "TokenBigram")
113
123
 
114
124
  ここでは、トークナイザとして<tt>:default_tokenzier =>
115
- "TokenBigram"</tt> を指定しています。トークナイザとは文字
116
- 列を単語に分解するオブジェクトのことです。デフォルトではトー
117
- クナイザは指定されていません。全文検索を利用するためにはトー
118
- クナイザを指定する必要があるので、ここではN-gramの一種である
119
- バイグラムを指定しています。
125
+ "TokenBigram"</tt> を指定しています。トークナイザとは文字列を
126
+ 単語に分解するオブジェクトのことです。デフォルトではトークナ
127
+ イザは指定されていません。全文検索を利用するためにはトークナ
128
+ イザを指定する必要があるので、ここではN-gramの一種であるバイ
129
+ グラムを指定しています。
120
130
 
121
131
  N-gramを利用した全文検索では、分解したN文字とその出現位置を利
122
132
  用して全文検索を行います。N-gramのNは文字列を何文字毎に分解す
123
133
  るかの文字数になります。groongaは1文字で分解するユニグラム、
124
134
  2文字のバイグラム、3文字のトリグラムをサポートしています。
125
135
 
136
+ また、大文字小文字の区別なく検索するために
137
+ <tt>:key_normalize => true</tt>も指定しています。
138
+
126
139
  単語格納用テーブルの準備ができたので、<tt>Items</tt>テーブ
127
140
  ルの+title+カラムに対するインデックスを定義します。
128
141
 
129
- >> title_index_column = terms.define_index_column("item_title", items,
130
- :source => "Items.title")
131
- => #<Groonga::IndexColumn ...>
142
+ >> Groonga::Schema.change_table("Terms") do |table|
143
+ ?> table.index("Items.title")
144
+ >> end
145
+ => [...]
132
146
 
133
147
  少し違和感を感じるかも知れませんが、<tt>Items</tt>テーブル
134
148
  のカラムに対するインデックスは、<tt>Terms</tt>テーブルのカ
@@ -148,22 +162,31 @@ N-gramを利用した全文検索では、分解したN文字とその出現位
148
162
 
149
163
  先ほど登録した各レコードの+title+カラムに値をセットします。
150
164
 
151
- >> items.find("http://ja.wikipedia.org/wiki/Ruby")["title"] = "Ruby"
165
+ >> items["http://ja.wikipedia.org/wiki/Ruby"].title = "Ruby"
152
166
  => "Ruby"
153
- >> items.find("http://www.ruby-lang.org/")["title"] = "オブジェクトスクリプト言語Ruby"
167
+ >> items["http://www.ruby-lang.org/ja/"].title = "オブジェクトスクリプト言語Ruby"
154
168
  "オブジェクトスクリプト言語Ruby"
155
169
 
156
170
  以下のようにして検索することができます。
157
171
 
158
- >> title_index_column.search("Ruby").collect {|record| record.key.key}
159
- ["http://ja.wikipedia.org/wiki/Ruby", "http://www.ruby-lang.org/"]
172
+ >> ruby_items = items.select {|record| record.title =~ "Ruby"}
173
+ => #<Groonga::Hash ..., size: <2>>
160
174
 
161
175
  検索結果はGroonga::Hashで返されます。ハッシュのキーに見つかっ
162
- た<tt>Items</tt>のレコードが入っています。上の例では
163
- +record.key+で<tt>Items</tt>のレコードを取得して、さらにそ
164
- のキーを指定して(+record.key.key+)で<tt>Items</tt>のキー
165
- を返しています。
176
+ た<tt>Items</tt>のレコードが入っています。
166
177
 
178
+ >> ruby_items.collect {|record| record.key.key}
179
+ => ["http://ja.wikipedia.org/wiki/Ruby", "http://www.ruby-lang.org/ja/"]
180
+
181
+ 上の例では+record.key+で<tt>Items</tt>のレコードを取得して、
182
+ さらにそのキーを指定して(+record.key.key+)で<tt>Items</tt>
183
+ のキーを返しています。
184
+
185
+ +record["_key"]+でアクセスすると自動的に参照しているレコード
186
+ を辿っていき、参照先のキーにアクセスできます。
187
+
188
+ >> ruby_items.collect {|record| record["_key"]}
189
+ => ["http://ja.wikipedia.org/wiki/Ruby", "http://www.ruby-lang.org/ja/"]
167
190
 
168
191
  == マルチユーザ向けのブックマークアプリケーション
169
192
 
@@ -178,37 +201,35 @@ http://qwik.jp/senna/senna2.files/rect4605.png
178
201
 
179
202
  まず、<tt>Users</tt>テーブルを追加します。
180
203
 
181
- >> users = Groonga::Hash.create(:name => "Users",
182
- :key_type => "ShortText")
183
- => #<Groonga::Hash ...>
184
- >> users.define_column("name", "Text")
185
- => #<Groonga::VarSizeColumn ...>
186
-
204
+ >> Groonga::Schema.create_table("Users", :type => :hash) do |table|
205
+ ?> table.text("name")
206
+ >> end
207
+ => [...]
187
208
 
188
209
  次に、<tt>Comments</tt>テーブルを追加します。
189
210
 
190
- >> comments = Groonga::Array.create(:name => "Comments")
191
- => #<Groonga::Array ...>
192
- >> comments.define_column("item", items)
193
- => #<Groonga::FixSizeColumn ..>
194
- >> comments.define_column("author", users)
195
- => #<Groonga::FixSizeColumn ..>
196
- >> comments.define_column("content", "Text")
197
- => #<Groonga::VarSizeColumn ..>
198
- >> comments.define_column("issued", "Time")
199
- => #<Groonga::FixSizeColumn ..>
211
+ >> Groonga::Schema.create_table("Comments") do |table|
212
+ ?> table.reference("item")
213
+ >> table.reference("author", "Users")
214
+ >> table.text("content")
215
+ >> table.time("issued")
216
+ >> end
217
+ => [...]
200
218
 
201
219
  <tt>Comments</tt>テーブルの+content+カラムを全文検索できる
202
220
  ようにインデックスを定義します。
203
221
 
204
- >> terms.define_index_column("comment_content", comments,
205
- :source => "Comments.content")
206
- => #<Groonga::IndexColumn ...>
222
+ >> Groonga::Schema.change_table("Terms") do |table|
223
+ ?> table.index("Comments.content")
224
+ >> end
225
+ => [...]
207
226
 
208
227
  これでテーブルが定義できました。
209
228
 
210
229
  続いてユーザを何人か追加します。
211
230
 
231
+ >> users = Groonga["Users"]
232
+ => #<Groonga::Hash ...>
212
233
  >> users.add("moritan", :name => "モリタン")
213
234
  => #<Groonga::Record ...>
214
235
  >> users.add("taporobo", :name => "タポロボ")
@@ -217,28 +238,32 @@ http://qwik.jp/senna/senna2.files/rect4605.png
217
238
  次に、実際にユーザがブックマークを貼る時の処理を実行してみま
218
239
  しょう。
219
240
 
220
- ユーザ+moritan+が、はてなダイアリーのとあるページをブックマーク
221
- したと想定します。
241
+ ユーザ+moritan+が、Ruby関連のとあるページをブックマークしたと
242
+ 想定します。
222
243
 
223
244
  まず対象のページが<tt>Items</tt>テーブルに登録済かどうか調
224
245
  べます。
225
246
 
226
- >> items.find("http://d.hatena.ne.jp/brazil/20050829/1125321936")
227
- => nil
247
+ >> items.has_key?("http://www.rubyist.net/~matz/")
248
+ => false
228
249
 
229
250
  未登録なのでまず当該ページを<tt>Items</tt>に登録します。
230
251
 
231
- >> items.add("http://d.hatena.ne.jp/brazil/20050829/1125321936",
232
- :title => "[翻訳]JavaScript: 世界で最も誤解されたプログラミング言語")
252
+ >> items.add("http://www.rubyist.net/~matz/",
253
+ ?> :title => "Matzにっき")
233
254
  => #<Groonga::Record ...>
234
255
 
235
256
  次に、登録したitemを+item+カラムの値に指定して
236
257
  <tt>Comments</tt>にレコードを登録します。
237
258
 
238
- >> comments.add(:item => "http://d.hatena.ne.jp/brazil/20050829/1125321936",
239
- :author => "moritan",
240
- :content => "JavaScript LISP",
241
- :issued => 1187430026)
259
+ >> require "time"
260
+ => true
261
+ >> comments = Groonga["Comments"]
262
+ => #<Groonga::Array ...>
263
+ >> comments.add(:item => "http://www.rubyist.net/~matz/",
264
+ ?> :author => "moritan",
265
+ ?> :content => "Ruby Matz",
266
+ ?> :issued => Time.parse("2010-11-20T18:01:22+09:00"))
242
267
  => #<Groonga::Record ...>
243
268
 
244
269
  == メソッド化
@@ -246,14 +271,17 @@ http://qwik.jp/senna/senna2.files/rect4605.png
246
271
  上記の一連の手続きをメソッドにまとめてみます。
247
272
 
248
273
  >> @items = items
274
+ => #<Groonga::Hash ...>
249
275
  >> @comments = comments
276
+ => #<Groonga::Array ...>
250
277
  >> def add_bookmark(url, title, author, content, issued)
251
- >> item = @items.find(url) || @items.add(url, :title => title)
278
+ >> item = @items[url] || @items.add(url, :title => title)
252
279
  >> @comments.add(:item => item,
253
- >> :author => author,
254
- >> :content => content,
255
- >> :issued => issued)
256
- >> end
280
+ ?> :author => author,
281
+ ?> :content => content,
282
+ ?> :issued => issued)
283
+ >> end
284
+ => nil
257
285
 
258
286
  +itmes+と+comments+をインスタンス変数に代入しているのはメソッ
259
287
  ド内からでも見えるようにするためです。
@@ -267,15 +295,18 @@ http://qwik.jp/senna/senna2.files/rect4605.png
267
295
  作成したメソッドを呼び出していくつかブックマークを登録してみ
268
296
  ましょう。
269
297
 
270
- >> add_bookmark("http://practical-scheme.net/docs/cont-j.html",
271
- "なんでも継続", "moritan", "継続 LISP Scheme", 1187568692)
298
+ >> add_bookmark("http://jp.rubyist.net/magazine/",
299
+ ?> "Rubyist Magazine - るびま", "moritan", "Ruby 記事",
300
+ ?> Time.parse("2010-10-07T14:18:28+09:00"))
272
301
  => #<Groonga::Record ...>
273
- >> add_bookmark("http://d.hatena.ne.jp/higepon/20070815/1187192864",
274
- "末尾再帰", "taporobo", "末尾再帰 Scheme LISP", 1187568793)
302
+ >> add_bookmark("http://groonga.rubyforge.org/",
303
+ ?> "Rubyでgroonga使って全文検索 - ラングバ", "taporobo",
304
+ ?> "Ruby groonga 全文検索",
305
+ ?> Time.parse("2010-11-11T12:39:59+09:00"))
275
306
  => #<Groonga::Record ...>
276
- >> add_bookmark("http://practical-scheme.net/docs/cont-j.html",
277
- "なんでも継続", "taporobo", "トランポリン LISP continuation",
278
- 1187568692)
307
+ >> add_bookmark("http://www.rubyist.net/~matz/",
308
+ ?> "Matz日記", "taporobo", "Ruby 日記",
309
+ ?> Time.parse("2010-07-28T20:46:23+09:00"))
279
310
  => #<Groonga::Record ...>
280
311
 
281
312
  == 全文検索その2
@@ -283,25 +314,27 @@ http://qwik.jp/senna/senna2.files/rect4605.png
283
314
  登録したレコードに対して全文検索を実行してみます。
284
315
 
285
316
  >> records = comments.select do |record|
286
- >> record["content"] =~ "LISP"
287
- >> end
317
+ ?> record["content"] =~ "Ruby"
318
+ >> end
319
+ => #<Groonga::Hash ...>
288
320
  >> records.each do |record|
289
- >> record = record.key
321
+ ?> record = record.key
290
322
  >> p [record.id,
291
- >> record[".issued"],
292
- >> record[".item.title"],
293
- >> record[".author.name"],
294
- >> record[".content"]]
295
- >> end
296
- [1, Sat Aug 18 18:40:26 +0900 2007, "[翻訳]JavaScript: 世界で最も誤解されたプログラミング言語", "モリタン", "JavaScript LISP"]
297
- [2, Mon Aug 20 09:11:32 +0900 2007, "なんでも継続", "モリタン", "継続 LISP Scheme"]
298
- [3, Mon Aug 20 09:13:13 +0900 2007, "末尾再帰", "タポロボ", "末尾再帰 Scheme LISP"]
299
- [4, Mon Aug 20 09:11:32 +0900 2007, "なんでも継続", "タポロボ", "トランポリン LISP continuation"]
300
-
301
- カラムへのアクセスは、カラム名を+.+で繋いで複合データ型の要素
302
- を再帰的に辿ることができます。(同様の出力を普通のRDBで実現す
303
- るためには、<tt>Items</tt>テーブル、<tt>Comments</tt>テー
304
- ブル、<tt>Users</tt>テーブルのJOIN操作が必要になります。)
323
+ ?> record.issued,
324
+ ?> record.item.title,
325
+ ?> record.author.name,
326
+ ?> record.content]
327
+ >> end
328
+ [1, Sat Nov 20 18:01:22 +0900 2010, "Matzにっき", "モリタン", "Ruby Matz"]
329
+ [2, Thu Oct 07 14:18:28 +0900 2010, "Rubyist Magazine - るびま", "モリタン", "Ruby 記事"]
330
+ [3, Thu Nov 11 12:39:59 +0900 2010, "Rubyでgroonga使って全文検索 - ラングバ", "タポロボ", "Ruby groonga 全文検索検"]
331
+ [4, Wed Jul 28 20:46:23 +0900 2010, "Matzにっき", "タポロボ", "Ruby 日記"]
332
+
333
+ カラム名と同じメソッドでカラムへのアクセスできます。複合デー
334
+ タ型の要素も再帰的に辿ることができます。(同様の出力を普通の
335
+ RDBで実現するためには、<tt>Items</tt>テーブル、
336
+ <tt>Comments</tt>テーブル、<tt>Users</tt>テーブルのJOIN操作が
337
+ 必要になります。)
305
338
 
306
339
  上の式の中で、肝心の検索処理は、第一引数の式を評価する時点で
307
340
  完了していて、レコードセットオブジェクトとしてメモリに蓄積さ
@@ -314,31 +347,33 @@ http://qwik.jp/senna/senna2.files/rect4605.png
314
347
 
315
348
  以下は、日付で降順にソートしてから出力した例です。
316
349
 
317
- >> records.sort([{:key => ".issued", :order => "descending"}]).each do |record|
318
- >> record = record.key
350
+ >> records.sort([{:key => "issued", :order => "descending"}]).each do |record|
351
+ ?> record = record.key
319
352
  >> p [record.id,
320
- >> record[".issued"],
321
- >> record[".item.title"],
322
- >> record[".author.name"],
323
- >> record[".content"]]
324
- >> end
325
- [3, Mon Aug 20 09:13:13 +0900 2007, "末尾再帰", "タポロボ", "末尾再帰 Scheme LISP"]
326
- [2, Mon Aug 20 09:11:32 +0900 2007, "なんでも継続", "モリタン", "継続 LISP Scheme"]
327
- [4, Mon Aug 20 09:11:32 +0900 2007, "なんでも継続", "タポロボ", "トランポリン LISP continuation"]
328
- [1, Sat Aug 18 18:40:26 +0900 2007, "[翻訳]JavaScript: 世界で最も誤解されたプログラミング言語", "モリタン", "JavaScript LISP"]
353
+ ?> record.issued,
354
+ ?> record.item.title,
355
+ ?> record.author.name,
356
+ ?> record.content]
357
+ >> end
358
+ [1, Sat Nov 20 18:01:22 +0900 2010, "Matzにっき", "モリタン", "Ruby Matz"]
359
+ [3, Thu Nov 11 12:39:59 +0900 2010, "Rubyでgroonga使って全文検索 - ラングバ", "タポロボ", "Ruby groonga 全文検索"]
360
+ [2, Thu Oct 07 14:18:28 +0900 2010, "Rubyist Magazine - るびま", "モリタン", "Ruby 記事"]
361
+ [4, Wed Jul 28 20:46:23 +0900 2010, "Matzにっき, "タポロボ", "Ruby 日記"]
362
+ => [...]
329
363
 
330
364
  同じitemが何度も出てくると検索結果が見にくいので、item毎にグ
331
365
  ループ化してみます。
332
366
 
333
367
  >> records.group("item").each do |record|
334
- >> item = record.key
368
+ ?> item = record.key
335
369
  >> p [record.n_sub_records,
336
- >> item.key,
337
- >> item[".title"]]
338
- >> end
339
- [1, "http://d.hatena.ne.jp/brazil/20050829/1125321936", "[翻訳]JavaScript: 世界で最も誤解されたプログラミング言語"]
340
- [2, "http://practical-scheme.net/docs/cont-j.html", "なんでも継続"]
341
- [1, "http://d.hatena.ne.jp/higepon/20070815/1187192864", "末尾再帰"]
370
+ ?> item.key,
371
+ ?> item.title]
372
+ >> end
373
+ [2, "http://www.rubyist.net/~matz/", "Matzにっき"]
374
+ [1, "http://jp.rubyist.net/magazine/", "Rubyist Magazine - るびま"]
375
+ [1, "http://groonga.rubyforge.org/", "Rubyでgroonga使って全文検索 - ラングバ"]
376
+ => nil
342
377
 
343
378
  +n_sub_records+というのはグループ化した単位に含まれるレコード
344
379
  の件数を示します。SQLで言えば、GROUP BY句を含むクエリのcount
@@ -346,8 +381,6 @@ http://qwik.jp/senna/senna2.files/rect4605.png
346
381
 
347
382
  == 少し複雑な検索
348
383
 
349
- ↓はまだ動かない!!!
350
-
351
384
  さらに実用的な検索について考えてみましょう。
352
385
 
353
386
  ブックマークが大量に蓄積されるに従って、より的確に適合度を算
@@ -373,22 +406,28 @@ http://qwik.jp/senna/senna2.files/rect4605.png
373
406
  以下のようにして、commentとitemとそれぞれに対する検索結果を求
374
407
  めます。
375
408
 
376
- >> ruby_comments = @comments.select {|record| record["content"] =~ "Ruby"}
377
- #<Groonga::Hash ..., size: <2>>
378
- >> ruby_items = @items.select("*W1:50 title:@Ruby")
379
- #<Groonga::Hash ..., size: <2>>
409
+ >> ruby_comments = @comments.select {|record| record.content =~ "Ruby"}
410
+ => #<Groonga::Hash ..., size: <4>
411
+ >> ruby_items = @items.select do |record|
412
+ ?> target = record.match_target do |match_record|
413
+ ?> match_record.title * 10
414
+ >> end
415
+ >> target =~ "Ruby"
416
+ >> end
417
+ #<Groonga::Hash ..., size: <4>>
380
418
 
381
419
  _ruby_comments_の結果をitem毎にグループ化し、_ruby_items_と
382
420
  unionして出力します。
383
421
 
384
422
  >> ruby_items = ruby_comments.group("item").union!(ruby_items)
385
- #<Groonga::Hash ..., size: <4>>
386
- >> ruby_items.sort([{:key => "._score", :order => "descendant"}]).each do |record|
387
- >> p [record["._score"], record[".title"]]
423
+ #<Groonga::Hash ..., size: <5>>
424
+ >> ruby_items.sort([{:key => "_score", :order => "descending"}]).each do |record|
425
+ >> p [record.score, record.title]
388
426
  >> end
389
- [1, "るびま"]
390
- [1, "オブジェクトスクリプト言語Ruby"]
391
- [1, "Ruby"]
392
- [1, "ラングバ"]
427
+ [10, "Rubyist Magazine - るびま"]
428
+ [10, "Ruby"]
429
+ [10, "Rubyでgroonga使って全文検索 - ラングバ"]
430
+ [10, "オブジェクトスクリプト言語Ruby"]
431
+ [2, "Matzにっき"]
393
432
 
394
- これで目的の結果が得られました。(FIXME: 得られていない!)
433
+ これで目的の結果が得られました。