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

Sign up to get free protection for your applications and to get access to all the features.
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でサポートされます。
@@ -0,0 +1,433 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ = チュートリアル
4
+
5
+ このページでは簡単なアプリケーションの作成を通して
6
+ rroongaの操作方法を紹介します。
7
+
8
+ == インストール
9
+
10
+ rroongaはRubyGemsでインストールできます。
11
+
12
+ % sudo gem install rroonga
13
+
14
+ == データベースの作成
15
+
16
+ 簡単なブックマークアプリケーション用のデータベースを作ってみ
17
+ ます。以下のようにgroongaライブラリを読み込んでirbを起動しま
18
+ す。
19
+
20
+ % irb --simple-prompt -rubygems -rgroonga
21
+ >>
22
+
23
+ まず、エンコーディングを設定します。ここではUTF-8を利用します。
24
+
25
+ >> $KCODE = "UTF-8"
26
+ => "UTF-8"
27
+ >> Groonga::Context.default_options = {:encoding => :utf8}
28
+ => {:encoding=>:utf8}
29
+
30
+ それでは、ファイルを指定してデータベースを作成します。
31
+
32
+ >> Groonga::Database.create(:path => "/tmp/bookmark.db")
33
+ => #<Groonga::Database ...>
34
+
35
+ ここで作成したデータベースは、これ以降、暗黙のうちに利用され
36
+ ます。最初にデータベースを作成したら特に意識する必要はありま
37
+ せん。
38
+
39
+ == テーブルの定義
40
+
41
+ groongaには以下の3種類のテーブルがあります。
42
+
43
+ [Groonga::Hash]
44
+ ハッシュテーブル。主キーでレコードを管理します。キーと完全
45
+ 一致するレコードを非常に高速に検索することができます。
46
+ [Groonga::PatriciaTrie]
47
+ パトリシアトライ。ハッシュテーブルに比べて完全一致検索の速
48
+ 度がやや遅いですが、前方一致検索・共通接頭辞探索などの検索
49
+ が行えます。またカーソルを用いてキーの昇降順にレコードを取
50
+ り出すことができます。
51
+ [Groonga::Array]
52
+ 配列。主キーの存在しないテーブルです。レコードはIDによって
53
+ 識別します。
54
+
55
+ ここではハッシュテーブルを利用して、<tt>Items</tt>という名前のテー
56
+ ブルを作成します。キーは文字列とします。
57
+
58
+ >> Groonga::Schema.create_table("Items", :type => :hash)
59
+ => [...]
60
+
61
+ これで<tt>Items</tt>という名前のテーブルが作成できました。
62
+
63
+ 定義したテーブルはGroonga.[]で参照できます。
64
+
65
+ >> items = Groonga["Items"]
66
+ => #<Groonga::Hash ...>
67
+
68
+ テーブルはRubyのHashのように扱えます。
69
+
70
+ 例えば、以下のように+size+でテーブルに登録されているレコード
71
+ の件数を取得できます。
72
+
73
+ >> items.size
74
+ => 0
75
+
76
+ == レコードを追加する
77
+
78
+ <tt>Items</tt>テーブルにレコードを追加します。
79
+
80
+ >> items.add("http://ja.wikipedia.org/wiki/Ruby")
81
+ => #<Groonga::Record ...>
82
+ >> items.add("http://www.ruby-lang.org/ja/")
83
+ => #<Groonga::Record ...>
84
+
85
+ 件数を確認すると確かに2件増えています。
86
+
87
+ >> items.size
88
+ => 2
89
+
90
+ 主キーを指定してレコードを取り出す時には以下のようにします。
91
+
92
+ >> items["http://ja.wikipedia.org/wiki/Ruby"]
93
+ => #<Groonga::Record ...>
94
+
95
+ == 全文検索を行う
96
+
97
+ 各itemのタイトル文字列を登録して、全文検索できるようにしてみ
98
+ ましょう。
99
+
100
+ まず<tt>Items</tt>テーブルに+title+という名前のカラムを追加し
101
+ ます。ここでは、<tt>Text</tt>型のデータを持つカラムとして定義
102
+ します。
103
+
104
+ >> Groonga::Schema.change_table("Items") do |table|
105
+ ?> table.text("title")
106
+ >> end
107
+ => [...]
108
+
109
+ 定義したカラムは「#{テーブル名}.#{カラム名}」という名前になります。
110
+ テーブルと同じようにGroonga.[]で参照できます。
111
+
112
+ >> title_column = Groonga["Items.title"]
113
+ => #<Groonga::VariableSizeColumn ...>
114
+
115
+ 全文検索するために、文字列を分解して得られる各単語を格納する
116
+ ためのテーブルを別途用意します。ここではTermsという名前でテー
117
+ ブルを定義します。
118
+
119
+ >> Groonga::Schema.create_table("Terms",
120
+ ?> :type => :patricia_trie,
121
+ ?> :key_normalize => true,
122
+ ?> :default_tokenizer => "TokenBigram")
123
+
124
+ ここでは、トークナイザとして<tt>:default_tokenzier =>
125
+ "TokenBigram"</tt> を指定しています。トークナイザとは文字列を
126
+ 単語に分解するオブジェクトのことです。デフォルトではトークナ
127
+ イザは指定されていません。全文検索を利用するためにはトークナ
128
+ イザを指定する必要があるので、ここではN-gramの一種であるバイ
129
+ グラムを指定しています。
130
+
131
+ N-gramを利用した全文検索では、分解したN文字とその出現位置を利
132
+ 用して全文検索を行います。N-gramのNは文字列を何文字毎に分解す
133
+ るかの文字数になります。groongaは1文字で分解するユニグラム、
134
+ 2文字のバイグラム、3文字のトリグラムをサポートしています。
135
+
136
+ また、大文字小文字の区別なく検索するために
137
+ <tt>:key_normalize => true</tt>も指定しています。
138
+
139
+ 単語格納用テーブルの準備ができたので、<tt>Items</tt>テーブ
140
+ ルの+title+カラムに対するインデックスを定義します。
141
+
142
+ >> Groonga::Schema.change_table("Terms") do |table|
143
+ ?> table.index("Items.title")
144
+ >> end
145
+ => [...]
146
+
147
+ 少し違和感を感じるかも知れませんが、<tt>Items</tt>テーブル
148
+ のカラムに対するインデックスは、<tt>Terms</tt>テーブルのカ
149
+ ラムとして定義します。
150
+
151
+ <tt>Items</tt>にレコードが登録されると、その中に含まれる単
152
+ 語に該当するレコードが<tt>Terms</tt>に自動的に追加されるよ
153
+ うになります。
154
+
155
+ <tt>Terms</tt>は、文書に含まれる語彙に相当する、やや特殊な
156
+ テーブルだと言えます。しかし、他のテーブルと同様に語彙テーブ
157
+ ルには自由にカラムを追加し、単語毎の様々な属性を管理すること
158
+ ができます。これはある種の検索処理を行う際には非常に便利に機
159
+ 能します。
160
+
161
+ これでテーブルの定義は完了です。
162
+
163
+ 先ほど登録した各レコードの+title+カラムに値をセットします。
164
+
165
+ >> items["http://ja.wikipedia.org/wiki/Ruby"].title = "Ruby"
166
+ => "Ruby"
167
+ >> items["http://www.ruby-lang.org/ja/"].title = "オブジェクトスクリプト言語Ruby"
168
+ "オブジェクトスクリプト言語Ruby"
169
+
170
+ 以下のようにして検索することができます。
171
+
172
+ >> ruby_items = items.select {|record| record.title =~ "Ruby"}
173
+ => #<Groonga::Hash ..., size: <2>>
174
+
175
+ 検索結果はGroonga::Hashで返されます。ハッシュのキーに見つかっ
176
+ た<tt>Items</tt>のレコードが入っています。
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/"]
190
+
191
+ == マルチユーザ向けのブックマークアプリケーション
192
+
193
+ ここまでで作った単機能のアプリケーションをもう少し拡張して、
194
+ 複数のユーザが、それぞれにコメントを記入できるブックマークア
195
+ プリケーションにしてみましょう。
196
+
197
+ まず、ユーザ情報とコメント情報を格納するテーブルを追加して、
198
+ 下図のようなテーブル構成にします。
199
+
200
+ http://qwik.jp/senna/senna2.files/rect4605.png
201
+
202
+ まず、<tt>Users</tt>テーブルを追加します。
203
+
204
+ >> Groonga::Schema.create_table("Users", :type => :hash) do |table|
205
+ ?> table.text("name")
206
+ >> end
207
+ => [...]
208
+
209
+ 次に、<tt>Comments</tt>テーブルを追加します。
210
+
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
+ => [...]
218
+
219
+ <tt>Comments</tt>テーブルの+content+カラムを全文検索できる
220
+ ようにインデックスを定義します。
221
+
222
+ >> Groonga::Schema.change_table("Terms") do |table|
223
+ ?> table.index("Comments.content")
224
+ >> end
225
+ => [...]
226
+
227
+ これでテーブルが定義できました。
228
+
229
+ 続いてユーザを何人か追加します。
230
+
231
+ >> users = Groonga["Users"]
232
+ => #<Groonga::Hash ...>
233
+ >> users.add("moritan", :name => "モリタン")
234
+ => #<Groonga::Record ...>
235
+ >> users.add("taporobo", :name => "タポロボ")
236
+ => #<Groonga::Record ...>
237
+
238
+ 次に、実際にユーザがブックマークを貼る時の処理を実行してみま
239
+ しょう。
240
+
241
+ ユーザ+moritan+が、Ruby関連のとあるページをブックマークしたと
242
+ 想定します。
243
+
244
+ まず対象のページが<tt>Items</tt>テーブルに登録済かどうか調
245
+ べます。
246
+
247
+ >> items.has_key?("http://www.rubyist.net/~matz/")
248
+ => false
249
+
250
+ 未登録なのでまず当該ページを<tt>Items</tt>に登録します。
251
+
252
+ >> items.add("http://www.rubyist.net/~matz/",
253
+ ?> :title => "Matzにっき")
254
+ => #<Groonga::Record ...>
255
+
256
+ 次に、登録したitemを+item+カラムの値に指定して
257
+ <tt>Comments</tt>にレコードを登録します。
258
+
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"))
267
+ => #<Groonga::Record ...>
268
+
269
+ == メソッド化
270
+
271
+ 上記の一連の手続きをメソッドにまとめてみます。
272
+
273
+ >> @items = items
274
+ => #<Groonga::Hash ...>
275
+ >> @comments = comments
276
+ => #<Groonga::Array ...>
277
+ >> def add_bookmark(url, title, author, content, issued)
278
+ >> item = @items[url] || @items.add(url, :title => title)
279
+ >> @comments.add(:item => item,
280
+ ?> :author => author,
281
+ ?> :content => content,
282
+ ?> :issued => issued)
283
+ >> end
284
+ => nil
285
+
286
+ +itmes+と+comments+をインスタンス変数に代入しているのはメソッ
287
+ ド内からでも見えるようにするためです。
288
+
289
+ +add_bookmark+は以下のような手順を実行しています。
290
+
291
+ * <tt>Items</tt>テーブルに該当ページのレコードがあるかどうか調べる。
292
+ * レコードがなければ追加する。
293
+ * <tt>Comments</tt>テーブルにレコードを登録する。
294
+
295
+ 作成したメソッドを呼び出していくつかブックマークを登録してみ
296
+ ましょう。
297
+
298
+ >> add_bookmark("http://jp.rubyist.net/magazine/",
299
+ ?> "Rubyist Magazine - るびま", "moritan", "Ruby 記事",
300
+ ?> Time.parse("2010-10-07T14:18:28+09:00"))
301
+ => #<Groonga::Record ...>
302
+ >> add_bookmark("http://groonga.rubyforge.org/",
303
+ ?> "Rubyでgroonga使って全文検索 - ラングバ", "taporobo",
304
+ ?> "Ruby groonga 全文検索",
305
+ ?> Time.parse("2010-11-11T12:39:59+09:00"))
306
+ => #<Groonga::Record ...>
307
+ >> add_bookmark("http://www.rubyist.net/~matz/",
308
+ ?> "Matz日記", "taporobo", "Ruby 日記",
309
+ ?> Time.parse("2010-07-28T20:46:23+09:00"))
310
+ => #<Groonga::Record ...>
311
+
312
+ == 全文検索その2
313
+
314
+ 登録したレコードに対して全文検索を実行してみます。
315
+
316
+ >> records = comments.select do |record|
317
+ ?> record["content"] =~ "Ruby"
318
+ >> end
319
+ => #<Groonga::Hash ...>
320
+ >> records.each do |record|
321
+ ?> record = record.key
322
+ >> p [record.id,
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
+ 必要になります。)
338
+
339
+ 上の式の中で、肝心の検索処理は、第一引数の式を評価する時点で
340
+ 完了していて、レコードセットオブジェクトとしてメモリに蓄積さ
341
+ れています。
342
+
343
+ >> records
344
+ #<Groonga::Hash ..., size: <4>>
345
+
346
+ レコードセットは、出力する前に様々に加工することができます。
347
+
348
+ 以下は、日付で降順にソートしてから出力した例です。
349
+
350
+ >> records.sort([{:key => "issued", :order => "descending"}]).each do |record|
351
+ ?> record = record.key
352
+ >> p [record.id,
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
+ => [...]
363
+
364
+ 同じitemが何度も出てくると検索結果が見にくいので、item毎にグ
365
+ ループ化してみます。
366
+
367
+ >> records.group("item").each do |record|
368
+ ?> item = record.key
369
+ >> p [record.n_sub_records,
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
377
+
378
+ +n_sub_records+というのはグループ化した単位に含まれるレコード
379
+ の件数を示します。SQLで言えば、GROUP BY句を含むクエリのcount
380
+ 関数のような働きです。
381
+
382
+ == 少し複雑な検索
383
+
384
+ さらに実用的な検索について考えてみましょう。
385
+
386
+ ブックマークが大量に蓄積されるに従って、より的確に適合度を算
387
+ 出する必要性に迫られます。
388
+
389
+ 今のところ検索対象として利用できるのは<tt>Items.title</tt>
390
+ と<tt>Comments.content</tt>ですが、<tt>Items.title</tt>は
391
+ 元ページから得られるやや信頼できる情報なのに対して、
392
+ <tt>Comments.content</tt>はブックマークユーザが任意に設定で
393
+ きる情報で、やや信憑性に乏しいと言えます。しかし、再現率を確
394
+ 保するためにはユーザのコメントも是非対象に含めたいところです。
395
+
396
+ そこで、以下のようなポリシーで検索を行うことにします。
397
+
398
+ * <tt>Items.title</tt>か<tt>Comments.content</tt>のいずれ
399
+ かにマッチするitemを検索する。
400
+ * ただし、<tt>Items.title</tt>にマッチしたレコードはスコア
401
+ を10倍重み付けする。
402
+ * 同一のitemに対して、キーワードにマッチする<tt>comment</tt>
403
+ が複数存在した場合は、それぞれの<tt>comment</tt>のスコアの
404
+ 和を、該当するitemのスコアとする。
405
+
406
+ 以下のようにして、commentとitemとそれぞれに対する検索結果を求
407
+ めます。
408
+
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>>
418
+
419
+ _ruby_comments_の結果をitem毎にグループ化し、_ruby_items_と
420
+ unionして出力します。
421
+
422
+ >> ruby_items = ruby_comments.group("item").union!(ruby_items)
423
+ #<Groonga::Hash ..., size: <5>>
424
+ >> ruby_items.sort([{:key => "_score", :order => "descending"}]).each do |record|
425
+ >> p [record.score, record.title]
426
+ >> end
427
+ [10, "Rubyist Magazine - るびま"]
428
+ [10, "Ruby"]
429
+ [10, "Rubyでgroonga使って全文検索 - ラングバ"]
430
+ [10, "オブジェクトスクリプト言語Ruby"]
431
+ [2, "Matzにっき"]
432
+
433
+ これで目的の結果が得られました。