sdsykes-ferret 0.11.6.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (195) hide show
  1. data/CHANGELOG +24 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README +102 -0
  4. data/Rakefile +338 -0
  5. data/TODO +17 -0
  6. data/TUTORIAL +231 -0
  7. data/bin/ferret-browser +79 -0
  8. data/ext/analysis.c +1555 -0
  9. data/ext/analysis.h +219 -0
  10. data/ext/api.c +69 -0
  11. data/ext/api.h +27 -0
  12. data/ext/array.c +123 -0
  13. data/ext/array.h +53 -0
  14. data/ext/bitvector.c +540 -0
  15. data/ext/bitvector.h +272 -0
  16. data/ext/compound_io.c +383 -0
  17. data/ext/config.h +42 -0
  18. data/ext/document.c +156 -0
  19. data/ext/document.h +53 -0
  20. data/ext/except.c +120 -0
  21. data/ext/except.h +168 -0
  22. data/ext/extconf.rb +14 -0
  23. data/ext/ferret.c +402 -0
  24. data/ext/ferret.h +91 -0
  25. data/ext/filter.c +156 -0
  26. data/ext/fs_store.c +483 -0
  27. data/ext/global.c +418 -0
  28. data/ext/global.h +117 -0
  29. data/ext/hash.c +567 -0
  30. data/ext/hash.h +473 -0
  31. data/ext/hashset.c +170 -0
  32. data/ext/hashset.h +187 -0
  33. data/ext/header.h +58 -0
  34. data/ext/helper.c +62 -0
  35. data/ext/helper.h +13 -0
  36. data/ext/inc/lang.h +48 -0
  37. data/ext/inc/threading.h +31 -0
  38. data/ext/index.c +6425 -0
  39. data/ext/index.h +961 -0
  40. data/ext/lang.h +66 -0
  41. data/ext/libstemmer.c +92 -0
  42. data/ext/libstemmer.h +79 -0
  43. data/ext/mempool.c +87 -0
  44. data/ext/mempool.h +35 -0
  45. data/ext/modules.h +162 -0
  46. data/ext/multimapper.c +310 -0
  47. data/ext/multimapper.h +51 -0
  48. data/ext/posh.c +1006 -0
  49. data/ext/posh.h +1007 -0
  50. data/ext/priorityqueue.c +151 -0
  51. data/ext/priorityqueue.h +143 -0
  52. data/ext/q_boolean.c +1608 -0
  53. data/ext/q_const_score.c +161 -0
  54. data/ext/q_filtered_query.c +209 -0
  55. data/ext/q_fuzzy.c +268 -0
  56. data/ext/q_match_all.c +148 -0
  57. data/ext/q_multi_term.c +677 -0
  58. data/ext/q_parser.c +2825 -0
  59. data/ext/q_phrase.c +1126 -0
  60. data/ext/q_prefix.c +100 -0
  61. data/ext/q_range.c +350 -0
  62. data/ext/q_span.c +2402 -0
  63. data/ext/q_term.c +337 -0
  64. data/ext/q_wildcard.c +171 -0
  65. data/ext/r_analysis.c +2575 -0
  66. data/ext/r_index.c +3472 -0
  67. data/ext/r_qparser.c +585 -0
  68. data/ext/r_search.c +4105 -0
  69. data/ext/r_store.c +513 -0
  70. data/ext/r_utils.c +963 -0
  71. data/ext/ram_store.c +471 -0
  72. data/ext/search.c +1741 -0
  73. data/ext/search.h +885 -0
  74. data/ext/similarity.c +150 -0
  75. data/ext/similarity.h +82 -0
  76. data/ext/sort.c +983 -0
  77. data/ext/stem_ISO_8859_1_danish.c +338 -0
  78. data/ext/stem_ISO_8859_1_danish.h +16 -0
  79. data/ext/stem_ISO_8859_1_dutch.c +635 -0
  80. data/ext/stem_ISO_8859_1_dutch.h +16 -0
  81. data/ext/stem_ISO_8859_1_english.c +1156 -0
  82. data/ext/stem_ISO_8859_1_english.h +16 -0
  83. data/ext/stem_ISO_8859_1_finnish.c +792 -0
  84. data/ext/stem_ISO_8859_1_finnish.h +16 -0
  85. data/ext/stem_ISO_8859_1_french.c +1276 -0
  86. data/ext/stem_ISO_8859_1_french.h +16 -0
  87. data/ext/stem_ISO_8859_1_german.c +512 -0
  88. data/ext/stem_ISO_8859_1_german.h +16 -0
  89. data/ext/stem_ISO_8859_1_italian.c +1091 -0
  90. data/ext/stem_ISO_8859_1_italian.h +16 -0
  91. data/ext/stem_ISO_8859_1_norwegian.c +296 -0
  92. data/ext/stem_ISO_8859_1_norwegian.h +16 -0
  93. data/ext/stem_ISO_8859_1_porter.c +776 -0
  94. data/ext/stem_ISO_8859_1_porter.h +16 -0
  95. data/ext/stem_ISO_8859_1_portuguese.c +1035 -0
  96. data/ext/stem_ISO_8859_1_portuguese.h +16 -0
  97. data/ext/stem_ISO_8859_1_spanish.c +1119 -0
  98. data/ext/stem_ISO_8859_1_spanish.h +16 -0
  99. data/ext/stem_ISO_8859_1_swedish.c +307 -0
  100. data/ext/stem_ISO_8859_1_swedish.h +16 -0
  101. data/ext/stem_KOI8_R_russian.c +701 -0
  102. data/ext/stem_KOI8_R_russian.h +16 -0
  103. data/ext/stem_UTF_8_danish.c +344 -0
  104. data/ext/stem_UTF_8_danish.h +16 -0
  105. data/ext/stem_UTF_8_dutch.c +653 -0
  106. data/ext/stem_UTF_8_dutch.h +16 -0
  107. data/ext/stem_UTF_8_english.c +1176 -0
  108. data/ext/stem_UTF_8_english.h +16 -0
  109. data/ext/stem_UTF_8_finnish.c +808 -0
  110. data/ext/stem_UTF_8_finnish.h +16 -0
  111. data/ext/stem_UTF_8_french.c +1296 -0
  112. data/ext/stem_UTF_8_french.h +16 -0
  113. data/ext/stem_UTF_8_german.c +526 -0
  114. data/ext/stem_UTF_8_german.h +16 -0
  115. data/ext/stem_UTF_8_italian.c +1113 -0
  116. data/ext/stem_UTF_8_italian.h +16 -0
  117. data/ext/stem_UTF_8_norwegian.c +302 -0
  118. data/ext/stem_UTF_8_norwegian.h +16 -0
  119. data/ext/stem_UTF_8_porter.c +794 -0
  120. data/ext/stem_UTF_8_porter.h +16 -0
  121. data/ext/stem_UTF_8_portuguese.c +1055 -0
  122. data/ext/stem_UTF_8_portuguese.h +16 -0
  123. data/ext/stem_UTF_8_russian.c +709 -0
  124. data/ext/stem_UTF_8_russian.h +16 -0
  125. data/ext/stem_UTF_8_spanish.c +1137 -0
  126. data/ext/stem_UTF_8_spanish.h +16 -0
  127. data/ext/stem_UTF_8_swedish.c +313 -0
  128. data/ext/stem_UTF_8_swedish.h +16 -0
  129. data/ext/stopwords.c +401 -0
  130. data/ext/store.c +692 -0
  131. data/ext/store.h +777 -0
  132. data/ext/term_vectors.c +352 -0
  133. data/ext/threading.h +31 -0
  134. data/ext/utilities.c +446 -0
  135. data/ext/win32.h +54 -0
  136. data/lib/ferret.rb +29 -0
  137. data/lib/ferret/browser.rb +246 -0
  138. data/lib/ferret/browser/s/global.js +192 -0
  139. data/lib/ferret/browser/s/style.css +148 -0
  140. data/lib/ferret/browser/views/document/list.rhtml +49 -0
  141. data/lib/ferret/browser/views/document/show.rhtml +27 -0
  142. data/lib/ferret/browser/views/error/index.rhtml +7 -0
  143. data/lib/ferret/browser/views/help/index.rhtml +8 -0
  144. data/lib/ferret/browser/views/home/index.rhtml +29 -0
  145. data/lib/ferret/browser/views/layout.rhtml +22 -0
  146. data/lib/ferret/browser/views/term-vector/index.rhtml +4 -0
  147. data/lib/ferret/browser/views/term/index.rhtml +199 -0
  148. data/lib/ferret/browser/views/term/termdocs.rhtml +1 -0
  149. data/lib/ferret/browser/webrick.rb +14 -0
  150. data/lib/ferret/document.rb +130 -0
  151. data/lib/ferret/field_infos.rb +44 -0
  152. data/lib/ferret/index.rb +786 -0
  153. data/lib/ferret/number_tools.rb +157 -0
  154. data/lib/ferret_version.rb +3 -0
  155. data/setup.rb +1555 -0
  156. data/test/test_all.rb +5 -0
  157. data/test/test_helper.rb +24 -0
  158. data/test/threading/number_to_spoken.rb +132 -0
  159. data/test/threading/thread_safety_index_test.rb +79 -0
  160. data/test/threading/thread_safety_read_write_test.rb +76 -0
  161. data/test/threading/thread_safety_test.rb +133 -0
  162. data/test/unit/analysis/tc_analyzer.rb +548 -0
  163. data/test/unit/analysis/tc_token_stream.rb +646 -0
  164. data/test/unit/index/tc_index.rb +762 -0
  165. data/test/unit/index/tc_index_reader.rb +699 -0
  166. data/test/unit/index/tc_index_writer.rb +437 -0
  167. data/test/unit/index/th_doc.rb +315 -0
  168. data/test/unit/largefile/tc_largefile.rb +46 -0
  169. data/test/unit/query_parser/tc_query_parser.rb +238 -0
  170. data/test/unit/search/tc_filter.rb +135 -0
  171. data/test/unit/search/tc_fuzzy_query.rb +147 -0
  172. data/test/unit/search/tc_index_searcher.rb +61 -0
  173. data/test/unit/search/tc_multi_searcher.rb +128 -0
  174. data/test/unit/search/tc_multiple_search_requests.rb +58 -0
  175. data/test/unit/search/tc_search_and_sort.rb +179 -0
  176. data/test/unit/search/tc_sort.rb +49 -0
  177. data/test/unit/search/tc_sort_field.rb +27 -0
  178. data/test/unit/search/tc_spans.rb +190 -0
  179. data/test/unit/search/tm_searcher.rb +384 -0
  180. data/test/unit/store/tc_fs_store.rb +77 -0
  181. data/test/unit/store/tc_ram_store.rb +35 -0
  182. data/test/unit/store/tm_store.rb +34 -0
  183. data/test/unit/store/tm_store_lock.rb +68 -0
  184. data/test/unit/tc_document.rb +81 -0
  185. data/test/unit/ts_analysis.rb +2 -0
  186. data/test/unit/ts_index.rb +2 -0
  187. data/test/unit/ts_largefile.rb +4 -0
  188. data/test/unit/ts_query_parser.rb +2 -0
  189. data/test/unit/ts_search.rb +2 -0
  190. data/test/unit/ts_store.rb +2 -0
  191. data/test/unit/ts_utils.rb +2 -0
  192. data/test/unit/utils/tc_bit_vector.rb +295 -0
  193. data/test/unit/utils/tc_number_tools.rb +117 -0
  194. data/test/unit/utils/tc_priority_queue.rb +106 -0
  195. metadata +285 -0
@@ -0,0 +1,16 @@
1
+
2
+ /* This file was generated automatically by the Snowball to ANSI C compiler */
3
+
4
+ #ifdef __cplusplus
5
+ extern "C" {
6
+ #endif
7
+
8
+ extern struct SN_env * spanish_UTF_8_create_env(void);
9
+ extern void spanish_UTF_8_close_env(struct SN_env * z);
10
+
11
+ extern int spanish_UTF_8_stem(struct SN_env * z);
12
+
13
+ #ifdef __cplusplus
14
+ }
15
+ #endif
16
+
@@ -0,0 +1,313 @@
1
+
2
+ /* This file was generated automatically by the Snowball to ANSI C compiler */
3
+
4
+ #include "header.h"
5
+
6
+ extern int swedish_UTF_8_stem(struct SN_env * z);
7
+ static int r_other_suffix(struct SN_env * z);
8
+ static int r_consonant_pair(struct SN_env * z);
9
+ static int r_main_suffix(struct SN_env * z);
10
+ static int r_mark_regions(struct SN_env * z);
11
+
12
+ extern struct SN_env * swedish_UTF_8_create_env(void);
13
+ extern void swedish_UTF_8_close_env(struct SN_env * z);
14
+
15
+ static symbol s_0_0[1] = { 'a' };
16
+ static symbol s_0_1[4] = { 'a', 'r', 'n', 'a' };
17
+ static symbol s_0_2[4] = { 'e', 'r', 'n', 'a' };
18
+ static symbol s_0_3[7] = { 'h', 'e', 't', 'e', 'r', 'n', 'a' };
19
+ static symbol s_0_4[4] = { 'o', 'r', 'n', 'a' };
20
+ static symbol s_0_5[2] = { 'a', 'd' };
21
+ static symbol s_0_6[1] = { 'e' };
22
+ static symbol s_0_7[3] = { 'a', 'd', 'e' };
23
+ static symbol s_0_8[4] = { 'a', 'n', 'd', 'e' };
24
+ static symbol s_0_9[4] = { 'a', 'r', 'n', 'e' };
25
+ static symbol s_0_10[3] = { 'a', 'r', 'e' };
26
+ static symbol s_0_11[4] = { 'a', 's', 't', 'e' };
27
+ static symbol s_0_12[2] = { 'e', 'n' };
28
+ static symbol s_0_13[5] = { 'a', 'n', 'd', 'e', 'n' };
29
+ static symbol s_0_14[4] = { 'a', 'r', 'e', 'n' };
30
+ static symbol s_0_15[5] = { 'h', 'e', 't', 'e', 'n' };
31
+ static symbol s_0_16[3] = { 'e', 'r', 'n' };
32
+ static symbol s_0_17[2] = { 'a', 'r' };
33
+ static symbol s_0_18[2] = { 'e', 'r' };
34
+ static symbol s_0_19[5] = { 'h', 'e', 't', 'e', 'r' };
35
+ static symbol s_0_20[2] = { 'o', 'r' };
36
+ static symbol s_0_21[1] = { 's' };
37
+ static symbol s_0_22[2] = { 'a', 's' };
38
+ static symbol s_0_23[5] = { 'a', 'r', 'n', 'a', 's' };
39
+ static symbol s_0_24[5] = { 'e', 'r', 'n', 'a', 's' };
40
+ static symbol s_0_25[5] = { 'o', 'r', 'n', 'a', 's' };
41
+ static symbol s_0_26[2] = { 'e', 's' };
42
+ static symbol s_0_27[4] = { 'a', 'd', 'e', 's' };
43
+ static symbol s_0_28[5] = { 'a', 'n', 'd', 'e', 's' };
44
+ static symbol s_0_29[3] = { 'e', 'n', 's' };
45
+ static symbol s_0_30[5] = { 'a', 'r', 'e', 'n', 's' };
46
+ static symbol s_0_31[6] = { 'h', 'e', 't', 'e', 'n', 's' };
47
+ static symbol s_0_32[4] = { 'e', 'r', 'n', 's' };
48
+ static symbol s_0_33[2] = { 'a', 't' };
49
+ static symbol s_0_34[5] = { 'a', 'n', 'd', 'e', 't' };
50
+ static symbol s_0_35[3] = { 'h', 'e', 't' };
51
+ static symbol s_0_36[3] = { 'a', 's', 't' };
52
+
53
+ static struct among a_0[37] =
54
+ {
55
+ /* 0 */ { 1, s_0_0, -1, 1, 0},
56
+ /* 1 */ { 4, s_0_1, 0, 1, 0},
57
+ /* 2 */ { 4, s_0_2, 0, 1, 0},
58
+ /* 3 */ { 7, s_0_3, 2, 1, 0},
59
+ /* 4 */ { 4, s_0_4, 0, 1, 0},
60
+ /* 5 */ { 2, s_0_5, -1, 1, 0},
61
+ /* 6 */ { 1, s_0_6, -1, 1, 0},
62
+ /* 7 */ { 3, s_0_7, 6, 1, 0},
63
+ /* 8 */ { 4, s_0_8, 6, 1, 0},
64
+ /* 9 */ { 4, s_0_9, 6, 1, 0},
65
+ /* 10 */ { 3, s_0_10, 6, 1, 0},
66
+ /* 11 */ { 4, s_0_11, 6, 1, 0},
67
+ /* 12 */ { 2, s_0_12, -1, 1, 0},
68
+ /* 13 */ { 5, s_0_13, 12, 1, 0},
69
+ /* 14 */ { 4, s_0_14, 12, 1, 0},
70
+ /* 15 */ { 5, s_0_15, 12, 1, 0},
71
+ /* 16 */ { 3, s_0_16, -1, 1, 0},
72
+ /* 17 */ { 2, s_0_17, -1, 1, 0},
73
+ /* 18 */ { 2, s_0_18, -1, 1, 0},
74
+ /* 19 */ { 5, s_0_19, 18, 1, 0},
75
+ /* 20 */ { 2, s_0_20, -1, 1, 0},
76
+ /* 21 */ { 1, s_0_21, -1, 2, 0},
77
+ /* 22 */ { 2, s_0_22, 21, 1, 0},
78
+ /* 23 */ { 5, s_0_23, 22, 1, 0},
79
+ /* 24 */ { 5, s_0_24, 22, 1, 0},
80
+ /* 25 */ { 5, s_0_25, 22, 1, 0},
81
+ /* 26 */ { 2, s_0_26, 21, 1, 0},
82
+ /* 27 */ { 4, s_0_27, 26, 1, 0},
83
+ /* 28 */ { 5, s_0_28, 26, 1, 0},
84
+ /* 29 */ { 3, s_0_29, 21, 1, 0},
85
+ /* 30 */ { 5, s_0_30, 29, 1, 0},
86
+ /* 31 */ { 6, s_0_31, 29, 1, 0},
87
+ /* 32 */ { 4, s_0_32, 21, 1, 0},
88
+ /* 33 */ { 2, s_0_33, -1, 1, 0},
89
+ /* 34 */ { 5, s_0_34, -1, 1, 0},
90
+ /* 35 */ { 3, s_0_35, -1, 1, 0},
91
+ /* 36 */ { 3, s_0_36, -1, 1, 0}
92
+ };
93
+
94
+ static symbol s_1_0[2] = { 'd', 'd' };
95
+ static symbol s_1_1[2] = { 'g', 'd' };
96
+ static symbol s_1_2[2] = { 'n', 'n' };
97
+ static symbol s_1_3[2] = { 'd', 't' };
98
+ static symbol s_1_4[2] = { 'g', 't' };
99
+ static symbol s_1_5[2] = { 'k', 't' };
100
+ static symbol s_1_6[2] = { 't', 't' };
101
+
102
+ static struct among a_1[7] =
103
+ {
104
+ /* 0 */ { 2, s_1_0, -1, -1, 0},
105
+ /* 1 */ { 2, s_1_1, -1, -1, 0},
106
+ /* 2 */ { 2, s_1_2, -1, -1, 0},
107
+ /* 3 */ { 2, s_1_3, -1, -1, 0},
108
+ /* 4 */ { 2, s_1_4, -1, -1, 0},
109
+ /* 5 */ { 2, s_1_5, -1, -1, 0},
110
+ /* 6 */ { 2, s_1_6, -1, -1, 0}
111
+ };
112
+
113
+ static symbol s_2_0[2] = { 'i', 'g' };
114
+ static symbol s_2_1[3] = { 'l', 'i', 'g' };
115
+ static symbol s_2_2[3] = { 'e', 'l', 's' };
116
+ static symbol s_2_3[5] = { 'f', 'u', 'l', 'l', 't' };
117
+ static symbol s_2_4[5] = { 'l', 0xC3, 0xB6, 's', 't' };
118
+
119
+ static struct among a_2[5] =
120
+ {
121
+ /* 0 */ { 2, s_2_0, -1, 1, 0},
122
+ /* 1 */ { 3, s_2_1, 0, 1, 0},
123
+ /* 2 */ { 3, s_2_2, -1, 1, 0},
124
+ /* 3 */ { 5, s_2_3, -1, 3, 0},
125
+ /* 4 */ { 5, s_2_4, -1, 2, 0}
126
+ };
127
+
128
+ static unsigned char g_v[] = { 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 };
129
+
130
+ static unsigned char g_s_ending[] = { 119, 127, 149 };
131
+
132
+ static symbol s_0[] = { 'l', 0xC3, 0xB6, 's' };
133
+ static symbol s_1[] = { 'f', 'u', 'l', 'l' };
134
+
135
+ static int r_mark_regions(struct SN_env * z) {
136
+ z->I[0] = z->l;
137
+ { int c_test = z->c; /* test, line 29 */
138
+ { int c = skip_utf8(z->p, z->c, 0, z->l, + 3);
139
+ if (c < 0) return 0;
140
+ z->c = c; /* hop, line 29 */
141
+ }
142
+ z->I[1] = z->c; /* setmark x, line 29 */
143
+ z->c = c_test;
144
+ }
145
+ while(1) { /* goto, line 30 */
146
+ int c = z->c;
147
+ if (!(in_grouping_U(z, g_v, 97, 246))) goto lab0;
148
+ z->c = c;
149
+ break;
150
+ lab0:
151
+ z->c = c;
152
+ { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
153
+ if (c < 0) return 0;
154
+ z->c = c; /* goto, line 30 */
155
+ }
156
+ }
157
+ while(1) { /* gopast, line 30 */
158
+ if (!(out_grouping_U(z, g_v, 97, 246))) goto lab1;
159
+ break;
160
+ lab1:
161
+ { int c = skip_utf8(z->p, z->c, 0, z->l, 1);
162
+ if (c < 0) return 0;
163
+ z->c = c; /* gopast, line 30 */
164
+ }
165
+ }
166
+ z->I[0] = z->c; /* setmark p1, line 30 */
167
+ /* try, line 31 */
168
+ if (!(z->I[0] < z->I[1])) goto lab2;
169
+ z->I[0] = z->I[1];
170
+ lab2:
171
+ return 1;
172
+ }
173
+
174
+ static int r_main_suffix(struct SN_env * z) {
175
+ int among_var;
176
+ { int m3; /* setlimit, line 37 */
177
+ int m = z->l - z->c; (void) m;
178
+ if (z->c < z->I[0]) return 0;
179
+ z->c = z->I[0]; /* tomark, line 37 */
180
+ m3 = z->lb; z->lb = z->c;
181
+ z->c = z->l - m;
182
+ z->ket = z->c; /* [, line 37 */
183
+ among_var = find_among_b(z, a_0, 37); /* substring, line 37 */
184
+ if (!(among_var)) { z->lb = m3; return 0; }
185
+ z->bra = z->c; /* ], line 37 */
186
+ z->lb = m3;
187
+ }
188
+ switch(among_var) {
189
+ case 0: return 0;
190
+ case 1:
191
+ { int ret;
192
+ ret = slice_del(z); /* delete, line 44 */
193
+ if (ret < 0) return ret;
194
+ }
195
+ break;
196
+ case 2:
197
+ if (!(in_grouping_b_U(z, g_s_ending, 98, 121))) return 0;
198
+ { int ret;
199
+ ret = slice_del(z); /* delete, line 46 */
200
+ if (ret < 0) return ret;
201
+ }
202
+ break;
203
+ }
204
+ return 1;
205
+ }
206
+
207
+ static int r_consonant_pair(struct SN_env * z) {
208
+ { int m3; /* setlimit, line 50 */
209
+ int m = z->l - z->c; (void) m;
210
+ if (z->c < z->I[0]) return 0;
211
+ z->c = z->I[0]; /* tomark, line 50 */
212
+ m3 = z->lb; z->lb = z->c;
213
+ z->c = z->l - m;
214
+ { int m = z->l - z->c; (void) m; /* and, line 52 */
215
+ if (!(find_among_b(z, a_1, 7))) { z->lb = m3; return 0; } /* among, line 51 */
216
+ z->c = z->l - m;
217
+ z->ket = z->c; /* [, line 52 */
218
+ { int c = skip_utf8(z->p, z->c, z->lb, 0, -1);
219
+ if (c < 0) { z->lb = m3; return 0; }
220
+ z->c = c; /* next, line 52 */
221
+ }
222
+ z->bra = z->c; /* ], line 52 */
223
+ { int ret;
224
+ ret = slice_del(z); /* delete, line 52 */
225
+ if (ret < 0) return ret;
226
+ }
227
+ }
228
+ z->lb = m3;
229
+ }
230
+ return 1;
231
+ }
232
+
233
+ static int r_other_suffix(struct SN_env * z) {
234
+ int among_var;
235
+ { int m3; /* setlimit, line 55 */
236
+ int m = z->l - z->c; (void) m;
237
+ if (z->c < z->I[0]) return 0;
238
+ z->c = z->I[0]; /* tomark, line 55 */
239
+ m3 = z->lb; z->lb = z->c;
240
+ z->c = z->l - m;
241
+ z->ket = z->c; /* [, line 56 */
242
+ among_var = find_among_b(z, a_2, 5); /* substring, line 56 */
243
+ if (!(among_var)) { z->lb = m3; return 0; }
244
+ z->bra = z->c; /* ], line 56 */
245
+ switch(among_var) {
246
+ case 0: { z->lb = m3; return 0; }
247
+ case 1:
248
+ { int ret;
249
+ ret = slice_del(z); /* delete, line 57 */
250
+ if (ret < 0) return ret;
251
+ }
252
+ break;
253
+ case 2:
254
+ { int ret;
255
+ ret = slice_from_s(z, 4, s_0); /* <-, line 58 */
256
+ if (ret < 0) return ret;
257
+ }
258
+ break;
259
+ case 3:
260
+ { int ret;
261
+ ret = slice_from_s(z, 4, s_1); /* <-, line 59 */
262
+ if (ret < 0) return ret;
263
+ }
264
+ break;
265
+ }
266
+ z->lb = m3;
267
+ }
268
+ return 1;
269
+ }
270
+
271
+ extern int swedish_UTF_8_stem(struct SN_env * z) {
272
+ { int c = z->c; /* do, line 66 */
273
+ { int ret = r_mark_regions(z);
274
+ if (ret == 0) goto lab0; /* call mark_regions, line 66 */
275
+ if (ret < 0) return ret;
276
+ }
277
+ lab0:
278
+ z->c = c;
279
+ }
280
+ z->lb = z->c; z->c = z->l; /* backwards, line 67 */
281
+
282
+ { int m = z->l - z->c; (void) m; /* do, line 68 */
283
+ { int ret = r_main_suffix(z);
284
+ if (ret == 0) goto lab1; /* call main_suffix, line 68 */
285
+ if (ret < 0) return ret;
286
+ }
287
+ lab1:
288
+ z->c = z->l - m;
289
+ }
290
+ { int m = z->l - z->c; (void) m; /* do, line 69 */
291
+ { int ret = r_consonant_pair(z);
292
+ if (ret == 0) goto lab2; /* call consonant_pair, line 69 */
293
+ if (ret < 0) return ret;
294
+ }
295
+ lab2:
296
+ z->c = z->l - m;
297
+ }
298
+ { int m = z->l - z->c; (void) m; /* do, line 70 */
299
+ { int ret = r_other_suffix(z);
300
+ if (ret == 0) goto lab3; /* call other_suffix, line 70 */
301
+ if (ret < 0) return ret;
302
+ }
303
+ lab3:
304
+ z->c = z->l - m;
305
+ }
306
+ z->c = z->lb;
307
+ return 1;
308
+ }
309
+
310
+ extern struct SN_env * swedish_UTF_8_create_env(void) { return SN_create_env(0, 2, 0); }
311
+
312
+ extern void swedish_UTF_8_close_env(struct SN_env * z) { SN_close_env(z); }
313
+
@@ -0,0 +1,16 @@
1
+
2
+ /* This file was generated automatically by the Snowball to ANSI C compiler */
3
+
4
+ #ifdef __cplusplus
5
+ extern "C" {
6
+ #endif
7
+
8
+ extern struct SN_env * swedish_UTF_8_create_env(void);
9
+ extern void swedish_UTF_8_close_env(struct SN_env * z);
10
+
11
+ extern int swedish_UTF_8_stem(struct SN_env * z);
12
+
13
+ #ifdef __cplusplus
14
+ }
15
+ #endif
16
+
@@ -0,0 +1,401 @@
1
+ #include <stdlib.h>
2
+
3
+ /*
4
+ * This list of stop words is taken from
5
+ *
6
+ * http://snowball.tartarus.org/
7
+ *
8
+ * Many thanks to Martin Porter
9
+ */
10
+
11
+ const char *ENGLISH_STOP_WORDS[] = {
12
+ "a", "an", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in",
13
+ "into", "is", "it", "no", "not", "of", "on", "or", "such", "that",
14
+ "the", "their", "then", "there", "these", "they", "this", "to", "was",
15
+ "with", NULL
16
+ };
17
+
18
+ const char *FULL_ENGLISH_STOP_WORDS[] = {
19
+ "a", "about", "above", "after", "again", "against", "all", "am", "an",
20
+ "and", "any", "are", "aren't", "as", "at", "be", "because", "been",
21
+ "before", "being", "below", "between", "both", "but", "by", "cannot",
22
+ "can't", "could", "couldn't", "did", "didn't", "do", "does", "doesn't",
23
+ "doing", "don't", "down", "during", "each", "few", "for", "from",
24
+ "further",
25
+ "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he",
26
+ "he'd",
27
+ "he'll", "her", "here", "here's", "hers", "herself", "he's", "him",
28
+ "himself", "his", "how", "how's", "i", "i'd", "if", "i'll", "i'm", "in",
29
+ "into", "is", "isn't", "it", "its", "it's", "itself", "i've", "let's",
30
+ "me",
31
+ "more", "most", "mustn't", "my", "myself", "no", "nor", "not", "of",
32
+ "off",
33
+ "on", "once", "only", "or", "other", "ought", "our", "ours", "ourselves",
34
+ "out", "over", "own", "same", "shan't", "she", "she'd", "she'll", "she's",
35
+ "should", "shouldn't", "so", "some", "such", "than", "that", "that's",
36
+ "the", "their", "theirs", "them", "themselves", "then", "there",
37
+ "there's",
38
+ "these", "they", "they'd", "they'll", "they're", "they've", "this",
39
+ "those",
40
+ "through", "to", "too", "under", "until", "up", "very", "was", "wasn't",
41
+ "we", "we'd", "we'll", "were", "we're", "weren't", "we've", "what",
42
+ "what's", "when", "when's", "where", "where's", "which", "while", "who",
43
+ "whom", "who's", "why", "why's", "with", "won't", "would", "wouldn't",
44
+ "you", "you'd", "you'll", "your", "you're", "yours", "yourself",
45
+ "yourselves", "you've", NULL
46
+ };
47
+
48
+ const char *EXTENDED_ENGLISH_STOP_WORDS[] = {
49
+ "a", "about", "above", "after", "again", "against", "all", "am", "an",
50
+ "and", "any", "are", "aren't", "as", "at", "be", "because", "been",
51
+ "before", "being", "below", "between", "both", "but", "by", "cannot",
52
+ "can't", "could", "couldn't", "did", "didn't", "do", "does", "doesn't",
53
+ "doing", "don't", "down", "during", "each", "few", "for", "from",
54
+ "further",
55
+ "had", "hadn't", "has", "hasn't", "have", "haven't", "having", "he",
56
+ "he'd",
57
+ "he'll", "her", "here", "here's", "hers", "herself", "he's", "him",
58
+ "himself", "his", "how", "how's", "i", "i'd", "if", "i'll", "i'm", "in",
59
+ "into", "is", "isn't", "it", "its", "it's", "itself", "i've", "let's",
60
+ "me",
61
+ "more", "most", "mustn't", "my", "myself", "no", "nor", "not", "of",
62
+ "off",
63
+ "on", "once", "only", "or", "other", "ought", "our", "ours", "ourselves",
64
+ "out", "over", "own", "same", "shan't", "she", "she'd", "she'll", "she's",
65
+ "should", "shouldn't", "so", "some", "such", "than", "that", "that's",
66
+ "the", "their", "theirs", "them", "themselves", "then", "there",
67
+ "there's",
68
+ "these", "they", "they'd", "they'll", "they're", "they've", "this",
69
+ "those",
70
+ "through", "to", "too", "under", "until", "up", "very", "was", "wasn't",
71
+ "we", "we'd", "we'll", "were", "we're", "weren't", "we've", "what",
72
+ "what's", "when", "when's", "where", "where's", "which", "while", "who",
73
+ "whom", "who's", "why", "why's", "with", "won't", "would", "wouldn't",
74
+ "you", "you'd", "you'll", "your", "you're", "yours", "yourself",
75
+ "yourselves", "you've",
76
+
77
+ /* Most common words in the English Language */
78
+ "one", "every", "least", "less", "many", "now", "ever", "never", "say",
79
+ "says", "said", "also", "get", "go", "goes", "just", "made", "make",
80
+ "put",
81
+ "see", "seen", "whether", "like", "well", "back", "even", "still", "way",
82
+ "take", "since", "another", "however", "two", "three", "four", "five",
83
+ "first", "second", "new", "old", "high", "long", NULL
84
+ };
85
+
86
+ const char *FULL_FRENCH_STOP_WORDS[] = {
87
+ "au", "aux", "avec", "ce", "ces", "dans", "de", "des", "du", "elle", "en",
88
+ "et", "eux", "il", "je", "la", "le", "leur", "lui", "ma", "mais", "me",
89
+ "même", "mes", "moi", "mon", "ne", "nos", "notre", "nous", "on", "ou",
90
+ "par", "pas", "pour", "qu", "que", "qui", "sa", "se", "ses", "son", "sur",
91
+ "ta", "te", "tes", "toi", "ton", "tu", "un", "une", "vos", "votre",
92
+ "vous",
93
+ "c", "d", "j", "l", "à", "m", "n", "s", "t", "y", "été", "étée",
94
+ "étées",
95
+ "étés", "étant", "étante", "étants", "étantes", "suis", "es", "est",
96
+ "sommes", "êtes", "sont", "serai", "seras", "sera", "serons", "serez",
97
+ "seront", "serais", "serait", "serions", "seriez", "seraient", "étais",
98
+ "était", "étions", "étiez", "étaient", "fus", "fut", "fûmes",
99
+ "fûtes",
100
+ "furent", "sois", "soit", "soyons", "soyez", "soient", "fusse", "fusses",
101
+ "fût", "fussions", "fussiez", "fussent", "ayant", "ayante", "ayantes",
102
+ "ayants", "eu", "eue", "eues", "eus", "ai", "as", "avons", "avez", "ont",
103
+ "aurai", "auras", "aura", "aurons", "aurez", "auront", "aurais", "aurait",
104
+ "aurions", "auriez", "auraient", "avais", "avait", "avions", "aviez",
105
+ "avaient", "eut", "eûmes", "eûtes", "eurent", "aie", "aies", "ait",
106
+ "ayons",
107
+ "ayez", "aient", "eusse", "eusses", "eût", "eussions", "eussiez",
108
+ "eussent",
109
+ NULL
110
+ };
111
+
112
+ const char *FULL_SPANISH_STOP_WORDS[] = {
113
+ "de", "la", "que", "el", "en", "y", "a", "los", "del", "se", "las", "por",
114
+ "un", "para", "con", "no", "una", "su", "al", "lo", "como", "más",
115
+ "pero",
116
+ "sus", "le", "ya", "o", "este", "sí", "porque", "esta", "entre",
117
+ "cuando",
118
+ "muy", "sin", "sobre", "también", "me", "hasta", "hay", "donde", "quien",
119
+ "desde", "todo", "nos", "durante", "todos", "uno", "les", "ni", "contra",
120
+ "otros", "ese", "eso", "ante", "ellos", "e", "esto", "mí", "antes",
121
+ "algunos", "qué", "unos", "yo", "otro", "otras", "otra", "él", "tanto",
122
+ "esa", "estos", "mucho", "quienes", "nada", "muchos", "cual", "poco",
123
+ "ella", "estar", "estas", "algunas", "algo", "nosotros", "mi", "mis",
124
+ "tú",
125
+ "te", "ti", "tu", "tus", "ellas", "nosotras", "vosostros", "vosostras",
126
+ "os", "mío", "mía", "míos", "mías", "tuyo", "tuya", "tuyos", "tuyas",
127
+ "suyo", "suya", "suyos", "suyas", "nuestro", "nuestra", "nuestros",
128
+ "nuestras", "vuestro", "vuestra", "vuestros", "vuestras", "esos", "esas",
129
+ "estoy", "estás", "está", "estamos", "estáis", "están", "esté",
130
+ "estés",
131
+ "estemos", "estéis", "estén", "estaré", "estarás", "estará",
132
+ "estaremos",
133
+ "estaréis", "estarán", "estaría", "estarías", "estaríamos",
134
+ "estaríais",
135
+ "estarían", "estaba", "estabas", "estábamos", "estabais", "estaban",
136
+ "estuve", "estuviste", "estuvo", "estuvimos", "estuvisteis", "estuvieron",
137
+ "estuviera", "estuvieras", "estuviéramos", "estuvierais", "estuvieran",
138
+ "estuviese", "estuvieses", "estuviésemos", "estuvieseis", "estuviesen",
139
+ "estando", "estado", "estada", "estados", "estadas", "estad", "he", "has",
140
+ "ha", "hemos", "habéis", "han", "haya", "hayas", "hayamos", "hayáis",
141
+ "hayan", "habré", "habrás", "habrá", "habremos", "habréis", "habrán",
142
+ "habría", "habrías", "habríamos", "habríais", "habrían", "había",
143
+ "habías",
144
+ "habíamos", "habíais", "habían", "hube", "hubiste", "hubo", "hubimos",
145
+ "hubisteis", "hubieron", "hubiera", "hubieras", "hubiéramos",
146
+ "hubierais",
147
+ "hubieran", "hubiese", "hubieses", "hubiésemos", "hubieseis", "hubiesen",
148
+ "habiendo", "habido", "habida", "habidos", "habidas", "soy", "eres", "es",
149
+ "somos", "sois", "son", "sea", "seas", "seamos", "seáis", "sean",
150
+ "seré",
151
+ "serás", "será", "seremos", "seréis", "serán", "sería", "serías",
152
+ "seríamos", "seríais", "serían", "era", "eras", "éramos", "erais",
153
+ "eran",
154
+ "fui", "fuiste", "fue", "fuimos", "fuisteis", "fueron", "fuera", "fueras",
155
+ "fuéramos", "fuerais", "fueran", "fuese", "fueses", "fuésemos",
156
+ "fueseis",
157
+ "fuesen", "sintiendo", "sentido", "sentida", "sentidos", "sentidas",
158
+ "siente", "sentid", "tengo", "tienes", "tiene", "tenemos", "tenéis",
159
+ "tienen", "tenga", "tengas", "tengamos", "tengáis", "tengan", "tendré",
160
+ "tendrás", "tendrá", "tendremos", "tendréis", "tendrán", "tendría",
161
+ "tendrías", "tendríamos", "tendríais", "tendrían", "tenía",
162
+ "tenías",
163
+ "teníamos", "teníais", "tenían", "tuve", "tuviste", "tuvo", "tuvimos",
164
+ "tuvisteis", "tuvieron", "tuviera", "tuvieras", "tuviéramos",
165
+ "tuvierais",
166
+ "tuvieran", "tuviese", "tuvieses", "tuviésemos", "tuvieseis", "tuviesen",
167
+ "teniendo", "tenido", "tenida", "tenidos", "tenidas", "tened", NULL
168
+ };
169
+
170
+ const char *FULL_PORTUGUESE_STOP_WORDS[] = {
171
+ "de", "a", "o", "que", "e", "do", "da", "em", "um", "para", "com", "não",
172
+ "uma", "os", "no", "se", "na", "por", "mais", "as", "dos", "como", "mas",
173
+ "ao", "ele", "das", "à", "seu", "sua", "ou", "quando", "muito", "nos",
174
+ "já",
175
+ "eu", "também", "só", "pelo", "pela", "até", "isso", "ela", "entre",
176
+ "depois", "sem", "mesmo", "aos", "seus", "quem", "nas", "me", "esse",
177
+ "eles", "você", "essa", "num", "nem", "suas", "meu", "às", "minha",
178
+ "numa",
179
+ "pelos", "elas", "qual", "nós", "lhe", "deles", "essas", "esses",
180
+ "pelas",
181
+ "este", "dele", "tu", "te", "vocês", "vos", "lhes", "meus", "minhas",
182
+ "teu",
183
+ "tua", "teus", "tuas", "nosso", "nossa", "nossos", "nossas", "dela",
184
+ "delas", "esta", "estes", "estas", "aquele", "aquela", "aqueles",
185
+ "aquelas",
186
+ "isto", "aquilo", "estou", "está", "estamos", "estão", "estive",
187
+ "esteve",
188
+ "estivemos", "estiveram", "estava", "estávamos", "estavam", "estivera",
189
+ "estivéramos", "esteja", "estejamos", "estejam", "estivesse",
190
+ "estivéssemos", "estivessem", "estiver", "estivermos", "estiverem",
191
+ "hei",
192
+ "há", "havemos", "hão", "houve", "houvemos", "houveram", "houvera",
193
+ "houvéramos", "haja", "hajamos", "hajam", "houvesse", "houvéssemos",
194
+ "houvessem", "houver", "houvermos", "houverem", "houverei", "houverá",
195
+ "houveremos", "houverão", "houveria", "houveríamos", "houveriam", "sou",
196
+ "somos", "são", "era", "éramos", "eram", "fui", "foi", "fomos", "foram",
197
+ "fora", "fôramos", "seja", "sejamos", "sejam", "fosse", "fôssemos",
198
+ "fossem", "for", "formos", "forem", "serei", "será", "seremos", "serão",
199
+ "seria", "seríamos", "seriam", "tenho", "tem", "temos", "tém", "tinha",
200
+ "tínhamos", "tinham", "tive", "teve", "tivemos", "tiveram", "tivera",
201
+ "tivéramos", "tenha", "tenhamos", "tenham", "tivesse", "tivéssemos",
202
+ "tivessem", "tiver", "tivermos", "tiverem", "terei", "terá", "teremos",
203
+ "terão", "teria", "teríamos", "teriam", NULL
204
+ };
205
+
206
+ const char *FULL_ITALIAN_STOP_WORDS[] = {
207
+ "ad", "al", "allo", "ai", "agli", "all", "agl", "alla", "alle", "con",
208
+ "col", "coi", "da", "dal", "dallo", "dai", "dagli", "dall", "dagl",
209
+ "dalla",
210
+ "dalle", "di", "del", "dello", "dei", "degli", "dell", "degl", "della",
211
+ "delle", "in", "nel", "nello", "nei", "negli", "nell", "negl", "nella",
212
+ "nelle", "su", "sul", "sullo", "sui", "sugli", "sull", "sugl", "sulla",
213
+ "sulle", "per", "tra", "contro", "io", "tu", "lui", "lei", "noi", "voi",
214
+ "loro", "mio", "mia", "miei", "mie", "tuo", "tua", "tuoi", "tue", "suo",
215
+ "sua", "suoi", "sue", "nostro", "nostra", "nostri", "nostre", "vostro",
216
+ "vostra", "vostri", "vostre", "mi", "ti", "ci", "vi", "lo", "la", "li",
217
+ "le", "gli", "ne", "il", "un", "uno", "una", "ma", "ed", "se", "perché",
218
+ "anche", "come", "dov", "dove", "che", "chi", "cui", "non", "più",
219
+ "quale",
220
+ "quanto", "quanti", "quanta", "quante", "quello", "quelli", "quella",
221
+ "quelle", "questo", "questi", "questa", "queste", "si", "tutto", "tutti",
222
+ "a", "c", "e", "i", "l", "o", "ho", "hai", "ha", "abbiamo", "avete",
223
+ "hanno", "abbia", "abbiate", "abbiano", "avrò", "avrai", "avrà",
224
+ "avremo",
225
+ "avrete", "avranno", "avrei", "avresti", "avrebbe", "avremmo", "avreste",
226
+ "avrebbero", "avevo", "avevi", "aveva", "avevamo", "avevate", "avevano",
227
+ "ebbi", "avesti", "ebbe", "avemmo", "aveste", "ebbero", "avessi",
228
+ "avesse",
229
+ "avessimo", "avessero", "avendo", "avuto", "avuta", "avuti", "avute",
230
+ "sono", "sei", "è", "siamo", "siete", "sia", "siate", "siano", "sarò",
231
+ "sarai", "sarà", "saremo", "sarete", "saranno", "sarei", "saresti",
232
+ "sarebbe", "saremmo", "sareste", "sarebbero", "ero", "eri", "era",
233
+ "eravamo", "eravate", "erano", "fui", "fosti", "fu", "fummo", "foste",
234
+ "furono", "fossi", "fosse", "fossimo", "fossero", "essendo", "faccio",
235
+ "fai", "facciamo", "fanno", "faccia", "facciate", "facciano", "farò",
236
+ "farai", "farà", "faremo", "farete", "faranno", "farei", "faresti",
237
+ "farebbe", "faremmo", "fareste", "farebbero", "facevo", "facevi",
238
+ "faceva",
239
+ "facevamo", "facevate", "facevano", "feci", "facesti", "fece", "facemmo",
240
+ "faceste", "fecero", "facessi", "facesse", "facessimo", "facessero",
241
+ "facendo", "sto", "stai", "sta", "stiamo", "stanno", "stia", "stiate",
242
+ "stiano", "starò", "starai", "starà", "staremo", "starete", "staranno",
243
+ "starei", "staresti", "starebbe", "staremmo", "stareste", "starebbero",
244
+ "stavo", "stavi", "stava", "stavamo", "stavate", "stavano", "stetti",
245
+ "stesti", "stette", "stemmo", "steste", "stettero", "stessi", "stesse",
246
+ "stessimo", "stessero", "stando", NULL
247
+ };
248
+
249
+ const char *FULL_GERMAN_STOP_WORDS[] = {
250
+ "aber", "alle", "allem", "allen", "aller", "alles", "als", "also", "am",
251
+ "an", "ander", "andere", "anderem", "anderen", "anderer", "anderes",
252
+ "anderm", "andern", "anderr", "anders", "auch", "auf", "aus", "bei",
253
+ "bin",
254
+ "bis", "bist", "da", "damit", "dann", "der", "den", "des", "dem", "die",
255
+ "das", "daß", "derselbe", "derselben", "denselben", "desselben",
256
+ "demselben", "dieselbe", "dieselben", "dasselbe", "dazu", "dein", "deine",
257
+ "deinem", "deinen", "deiner", "deines", "denn", "derer", "dessen", "dich",
258
+ "dir", "du", "dies", "diese", "diesem", "diesen", "dieser", "dieses",
259
+ "doch", "dort", "durch", "ein", "eine", "einem", "einen", "einer",
260
+ "eines",
261
+ "einig", "einige", "einigem", "einigen", "einiger", "einiges", "einmal",
262
+ "er", "ihn", "ihm", "es", "etwas", "euer", "eure", "eurem", "euren",
263
+ "eurer", "eures", "für", "gegen", "gewesen", "hab", "habe", "haben",
264
+ "hat",
265
+ "hatte", "hatten", "hier", "hin", "hinter", "ich", "mich", "mir", "ihr",
266
+ "ihre", "ihrem", "ihren", "ihrer", "ihres", "euch", "im", "in", "indem",
267
+ "ins", "ist", "jede", "jedem", "jeden", "jeder", "jedes", "jene", "jenem",
268
+ "jenen", "jener", "jenes", "jetzt", "kann", "kein", "keine", "keinem",
269
+ "keinen", "keiner", "keines", "können", "könnte", "machen", "man",
270
+ "manche",
271
+ "manchem", "manchen", "mancher", "manches", "mein", "meine", "meinem",
272
+ "meinen", "meiner", "meines", "mit", "muss", "musste", "nach", "nicht",
273
+ "nichts", "noch", "nun", "nur", "ob", "oder", "ohne", "sehr", "sein",
274
+ "seine", "seinem", "seinen", "seiner", "seines", "selbst", "sich", "sie",
275
+ "ihnen", "sind", "so", "solche", "solchem", "solchen", "solcher",
276
+ "solches",
277
+ "soll", "sollte", "sondern", "sonst", "über", "um", "und", "uns", "unse",
278
+ "unsem", "unsen", "unser", "unses", "unter", "viel", "vom", "von", "vor",
279
+ "während", "war", "waren", "warst", "was", "weg", "weil", "weiter",
280
+ "welche", "welchem", "welchen", "welcher", "welches", "wenn", "werde",
281
+ "werden", "wie", "wieder", "will", "wir", "wird", "wirst", "wo", "wollen",
282
+ "wollte", "würde", "würden", "zu", "zum", "zur", "zwar", "zwischen",
283
+ NULL
284
+ };
285
+
286
+ const char *FULL_DUTCH_STOP_WORDS[] = {
287
+ "de", "en", "van", "ik", "te", "dat", "die", "in", "een", "hij", "het",
288
+ "niet", "zijn", "is", "was", "op", "aan", "met", "als", "voor", "had",
289
+ "er",
290
+ "maar", "om", "hem", "dan", "zou", "of", "wat", "mijn", "men", "dit",
291
+ "zo",
292
+ "door", "over", "ze", "zich", "bij", "ook", "tot", "je", "mij", "uit",
293
+ "der", "daar", "haar", "naar", "heb", "hoe", "heeft", "hebben", "deze",
294
+ "u",
295
+ "want", "nog", "zal", "me", "zij", "nu", "ge", "geen", "omdat", "iets",
296
+ "worden", "toch", "al", "waren", "veel", "meer", "doen", "toen", "moet",
297
+ "ben", "zonder", "kan", "hun", "dus", "alles", "onder", "ja", "eens",
298
+ "hier", "wie", "werd", "altijd", "doch", "wordt", "wezen", "kunnen",
299
+ "ons",
300
+ "zelf", "tegen", "na", "reeds", "wil", "kon", "niets", "uw", "iemand",
301
+ "geweest", "andere", NULL
302
+ };
303
+
304
+ const char *FULL_SWEDISH_STOP_WORDS[] = {
305
+ "och", "det", "att", "i", "en", "jag", "hon", "som", "han", "på", "den",
306
+ "med", "var", "sig", "för", "så", "till", "är", "men", "ett", "om",
307
+ "hade",
308
+ "de", "av", "icke", "mig", "du", "henne", "då", "sin", "nu", "har",
309
+ "inte",
310
+ "hans", "honom", "skulle", "hennes", "där", "min", "man", "ej", "vid",
311
+ "kunde", "något", "från", "ut", "när", "efter", "upp", "vi", "dem",
312
+ "vara",
313
+ "vad", "över", "än", "dig", "kan", "sina", "här", "ha", "mot", "alla",
314
+ "under", "någon", "eller", "allt", "mycket", "sedan", "ju", "denna",
315
+ "själv", "detta", "åt", "utan", "varit", "hur", "ingen", "mitt", "ni",
316
+ "bli", "blev", "oss", "din", "dessa", "några", "deras", "blir", "mina",
317
+ "samma", "vilken", "er", "sådan", "vår", "blivit", "dess", "inom",
318
+ "mellan",
319
+ "sådant", "varför", "varje", "vilka", "ditt", "vem", "vilket", "sitta",
320
+ "sådana", "vart", "dina", "vars", "vårt", "våra", "ert", "era",
321
+ "vilkas",
322
+ NULL
323
+ };
324
+
325
+
326
+ const char *FULL_NORWEGIAN_STOP_WORDS[] = {
327
+ "og", "i", "jeg", "det", "at", "en", "et", "den", "til", "er", "som",
328
+ "på",
329
+ "de", "med", "han", "av", "ikke", "ikkje", "der", "så", "var", "meg",
330
+ "seg",
331
+ "men", "ett", "har", "om", "vi", "min", "mitt", "ha", "hadde", "hun",
332
+ "nå",
333
+ "over", "da", "ved", "fra", "du", "ut", "sin", "dem", "oss", "opp", "man",
334
+ "kan", "hans", "hvor", "eller", "hva", "skal", "selv", "sjøl", "her",
335
+ "alle", "vil", "bli", "ble", "blei", "blitt", "kunne", "inn", "når",
336
+ "være",
337
+ "kom", "noen", "noe", "ville", "dere", "som", "deres", "kun", "ja",
338
+ "etter",
339
+ "ned", "skulle", "denne", "for", "deg", "si", "sine", "sitt", "mot", "å",
340
+ "meget", "hvorfor", "dette", "disse", "uten", "hvordan", "ingen", "din",
341
+ "ditt", "blir", "samme", "hvilken", "hvilke", "sånn", "inni", "mellom",
342
+ "vår", "hver", "hvem", "vors", "hvis", "både", "bare", "enn", "fordi",
343
+ "før", "mange", "også", "slik", "vært", "være", "båe", "begge",
344
+ "siden",
345
+ "dykk", "dykkar", "dei", "deira", "deires", "deim", "di", "då", "eg",
346
+ "ein",
347
+ "eit", "eitt", "elles", "honom", "hjå", "ho", "hoe", "henne", "hennar",
348
+ "hennes", "hoss", "hossen", "ikkje", "ingi", "inkje", "korleis", "korso",
349
+ "kva", "kvar", "kvarhelst", "kven", "kvi", "kvifor", "me", "medan", "mi",
350
+ "mine", "mykje", "no", "nokon", "noka", "nokor", "noko", "nokre", "si",
351
+ "sia", "sidan", "so", "somt", "somme", "um", "upp", "vere", "vore",
352
+ "verte",
353
+ "vort", "varte", "vart", NULL
354
+ };
355
+
356
+ const char *FULL_DANISH_STOP_WORDS[] = {
357
+ "og", "i", "jeg", "det", "at", "en", "den", "til", "er", "som", "på",
358
+ "de",
359
+ "med", "han", "af", "for", "ikke", "der", "var", "mig", "sig", "men",
360
+ "et",
361
+ "har", "om", "vi", "min", "havde", "ham", "hun", "nu", "over", "da",
362
+ "fra",
363
+ "du", "ud", "sin", "dem", "os", "op", "man", "hans", "hvor", "eller",
364
+ "hvad", "skal", "selv", "her", "alle", "vil", "blev", "kunne", "ind",
365
+ "når",
366
+ "være", "dog", "noget", "ville", "jo", "deres", "efter", "ned", "skulle",
367
+ "denne", "end", "dette", "mit", "også", "under", "have", "dig", "anden",
368
+ "hende", "mine", "alt", "meget", "sit", "sine", "vor", "mod", "disse",
369
+ "hvis", "din", "nogle", "hos", "blive", "mange", "ad", "bliver", "hendes",
370
+ "været", "thi", "jer", "sådan", NULL
371
+ };
372
+
373
+ const char *FULL_RUSSIAN_STOP_WORDS[] = {
374
+ "а", "без", "более", "бы", "был", "была", "были", "было", "быть", "в",
375
+ "вам", "вас", "весь", "во", "вот", "все", "всего", "всех", "вы", "где",
376
+ "да", "даже", "для", "до", "его", "ее", "ей", "ею", "если", "есть", "еще",
377
+ "же", "за", "здесь", "и", "из", "или", "им", "их", "к", "как", "ко",
378
+ "когда", "кто", "ли", "либо", "мне", "может", "мы", "на", "надо", "наш",
379
+ "не", "него", "нее", "нет", "ни", "них", "но", "ну", "о", "об", "однако",
380
+ "он", "она", "они", "оно", "от", "очень", "по", "под", "при", "с", "со",
381
+ "так", "также", "такой", "там", "те", "тем", "то", "того", "тоже", "той",
382
+ "только", "том", "ты", "у", "уже", "хотя", "чего", "чей", "чем", "что",
383
+ "чтобы", "чье", "чья", "эта", "эти", "это", "я", NULL
384
+ };
385
+
386
+ const char *FULL_RUSSIAN_STOP_WORDS_KOI8_R[] = {
387
+ "Á", "ÂÅÚ", "ÂÏÌÅÅ", "ÂÙ", "ÂÙÌ", "ÂÙÌÁ", "ÂÙÌÉ", "ÂÙÌÏ", "ÂÙÔØ", "×",
388
+ "×ÁÍ", "×ÁÓ", "×ÅÓØ", "×Ï", "×ÏÔ", "×ÓÅ", "×ÓÅÇÏ", "×ÓÅÈ", "×Ù", "ÇÄÅ",
389
+ "ÄÁ", "ÄÁÖÅ", "ÄÌÑ", "ÄÏ", "ÅÇÏ", "ÅÅ", "ÅÊ", "ÅÀ", "ÅÓÌÉ", "ÅÓÔØ", "ÅÝÅ",
390
+ "ÖÅ", "ÚÁ", "ÚÄÅÓØ", "É", "ÉÚ", "ÉÌÉ", "ÉÍ", "ÉÈ", "Ë", "ËÁË", "ËÏ",
391
+ "ËÏÇÄÁ", "ËÔÏ", "ÌÉ", "ÌÉÂÏ", "ÍÎÅ", "ÍÏÖÅÔ", "ÍÙ", "ÎÁ", "ÎÁÄÏ", "ÎÁÛ",
392
+ "ÎÅ", "ÎÅÇÏ", "ÎÅÅ", "ÎÅÔ", "ÎÉ", "ÎÉÈ", "ÎÏ", "ÎÕ", "Ï", "ÏÂ", "ÏÄÎÁËÏ",
393
+ "ÏÎ", "ÏÎÁ", "ÏÎÉ", "ÏÎÏ", "ÏÔ", "ÏÞÅÎØ", "ÐÏ", "ÐÏÄ", "ÐÒÉ", "Ó", "ÓÏ",
394
+ "ÔÁË", "ÔÁËÖÅ", "ÔÁËÏÊ", "ÔÁÍ", "ÔÅ", "ÔÅÍ", "ÔÏ", "ÔÏÇÏ", "ÔÏÖÅ", "ÔÏÊ",
395
+ "ÔÏÌØËÏ", "ÔÏÍ", "ÔÙ", "Õ", "ÕÖÅ", "ÈÏÔÑ", "ÞÅÇÏ", "ÞÅÊ", "ÞÅÍ", "ÞÔÏ",
396
+ "ÞÔÏÂÙ", "ÞØÅ", "ÞØÑ", "ÜÔÁ", "ÜÔÉ", "ÜÔÏ", "Ñ", NULL
397
+ };
398
+
399
+ const char *FULL_FINNISH_STOP_WORDS[] = {
400
+ NULL
401
+ };