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でサポートされます。
@@ -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
+ これで目的の結果が得られました。