mongoid-haystack 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. data/Rakefile +446 -0
  2. data/lib/app/models/mongoid/haystack/count.rb +1 -0
  3. data/lib/app/models/mongoid/haystack/index.rb +1 -0
  4. data/lib/app/models/mongoid/haystack/sequence.rb +1 -0
  5. data/lib/app/models/mongoid/haystack/token.rb +1 -0
  6. data/lib/mongoid-haystack.rb +79 -0
  7. data/lib/mongoid-haystack/count.rb +28 -0
  8. data/lib/mongoid-haystack/index.rb +165 -0
  9. data/lib/mongoid-haystack/search.rb +96 -0
  10. data/lib/mongoid-haystack/sequence.rb +55 -0
  11. data/lib/mongoid-haystack/stemming.rb +79 -0
  12. data/lib/mongoid-haystack/stemming/stopwords/english.txt +32 -0
  13. data/lib/mongoid-haystack/stemming/stopwords/extended_english.txt +216 -0
  14. data/lib/mongoid-haystack/stemming/stopwords/full_danish.txt +94 -0
  15. data/lib/mongoid-haystack/stemming/stopwords/full_dutch.txt +101 -0
  16. data/lib/mongoid-haystack/stemming/stopwords/full_english.txt +174 -0
  17. data/lib/mongoid-haystack/stemming/stopwords/full_finnish.txt +0 -0
  18. data/lib/mongoid-haystack/stemming/stopwords/full_french.txt +155 -0
  19. data/lib/mongoid-haystack/stemming/stopwords/full_german.txt +231 -0
  20. data/lib/mongoid-haystack/stemming/stopwords/full_italian.txt +279 -0
  21. data/lib/mongoid-haystack/stemming/stopwords/full_norwegian.txt +176 -0
  22. data/lib/mongoid-haystack/stemming/stopwords/full_portuguese.txt +203 -0
  23. data/lib/mongoid-haystack/stemming/stopwords/full_russian.txt +101 -0
  24. data/lib/mongoid-haystack/stemming/stopwords/full_russiankoi8_r.txt +101 -0
  25. data/lib/mongoid-haystack/stemming/stopwords/full_spanish.txt +313 -0
  26. data/lib/mongoid-haystack/token.rb +71 -0
  27. data/lib/mongoid-haystack/util.rb +67 -0
  28. data/mongoid-haystack.gemspec +73 -0
  29. data/test/helper.rb +28 -0
  30. data/test/mongoid-haystack_test.rb +119 -0
  31. data/test/testing.rb +196 -0
  32. metadata +123 -0
@@ -0,0 +1,101 @@
1
+ Á
2
+ ÂÅÚ
3
+ ÂÏÌÅÅ
4
+ ÂÙ
5
+ ÂÙÌ
6
+ ÂÙÌÁ
7
+ ÂÙÌÉ
8
+ ÂÙÌÏ
9
+ ÂÙÔØ
10
+ ×
11
+ ×ÁÍ
12
+ ×ÁÓ
13
+ ×ÅÓØ
14
+ ×Ï
15
+ ×ÏÔ
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
+ ÍÎÅ
48
+ ÍÏÖÅÔ
49
+ ÍÙ
50
+ ÎÁ
51
+ ÎÁÄÏ
52
+ ÎÁÛ
53
+ ÎÅ
54
+ ÎÅÇÏ
55
+ ÎÅÅ
56
+ ÎÅÔ
57
+ ÎÉ
58
+ ÎÉÈ
59
+ ÎÏ
60
+ ÎÕ
61
+ Ï
62
+ ÏÂ
63
+ ÏÄÎÁËÏ
64
+ ÏÎ
65
+ ÏÎÁ
66
+ ÏÎÉ
67
+ ÏÎÏ
68
+ ÏÔ
69
+ ÏÞÅÎØ
70
+ ÐÏ
71
+ ÐÏÄ
72
+ ÐÒÉ
73
+ Ó
74
+ ÓÏ
75
+ ÔÁË
76
+ ÔÁËÖÅ
77
+ ÔÁËÏÊ
78
+ ÔÁÍ
79
+ ÔÅ
80
+ ÔÅÍ
81
+ ÔÏ
82
+ ÔÏÇÏ
83
+ ÔÏÖÅ
84
+ ÔÏÊ
85
+ ÔÏÌØËÏ
86
+ ÔÏÍ
87
+ ÔÙ
88
+ Õ
89
+ ÕÖÅ
90
+ ÈÏÔÑ
91
+ ÞÅÇÏ
92
+ ÞÅÊ
93
+ ÞÅÍ
94
+ ÞÔÏ
95
+ ÞÔÏÂÙ
96
+ ÞØÅ
97
+ ÞØÑ
98
+ ÜÔÁ
99
+ ÜÔÉ
100
+ ÜÔÏ
101
+ Ñ
@@ -0,0 +1,313 @@
1
+ de
2
+ la
3
+ que
4
+ el
5
+ en
6
+ y
7
+ a
8
+ los
9
+ del
10
+ se
11
+ las
12
+ por
13
+ un
14
+ para
15
+ con
16
+ no
17
+ una
18
+ su
19
+ al
20
+ lo
21
+ como
22
+ más
23
+ pero
24
+ sus
25
+ le
26
+ ya
27
+ o
28
+ este
29
+
30
+ porque
31
+ esta
32
+ entre
33
+ cuando
34
+ muy
35
+ sin
36
+ sobre
37
+ también
38
+ me
39
+ hasta
40
+ hay
41
+ donde
42
+ quien
43
+ desde
44
+ todo
45
+ nos
46
+ durante
47
+ todos
48
+ uno
49
+ les
50
+ ni
51
+ contra
52
+ otros
53
+ ese
54
+ eso
55
+ ante
56
+ ellos
57
+ e
58
+ esto
59
+
60
+ antes
61
+ algunos
62
+ qué
63
+ unos
64
+ yo
65
+ otro
66
+ otras
67
+ otra
68
+ él
69
+ tanto
70
+ esa
71
+ estos
72
+ mucho
73
+ quienes
74
+ nada
75
+ muchos
76
+ cual
77
+ poco
78
+ ella
79
+ estar
80
+ estas
81
+ algunas
82
+ algo
83
+ nosotros
84
+ mi
85
+ mis
86
+
87
+ te
88
+ ti
89
+ tu
90
+ tus
91
+ ellas
92
+ nosotras
93
+ vosostros
94
+ vosostras
95
+ os
96
+ mío
97
+ mía
98
+ míos
99
+ mías
100
+ tuyo
101
+ tuya
102
+ tuyos
103
+ tuyas
104
+ suyo
105
+ suya
106
+ suyos
107
+ suyas
108
+ nuestro
109
+ nuestra
110
+ nuestros
111
+ nuestras
112
+ vuestro
113
+ vuestra
114
+ vuestros
115
+ vuestras
116
+ esos
117
+ esas
118
+ estoy
119
+ estás
120
+ está
121
+ estamos
122
+ estáis
123
+ están
124
+ esté
125
+ estés
126
+ estemos
127
+ estéis
128
+ estén
129
+ estaré
130
+ estarás
131
+ estará
132
+ estaremos
133
+ estaréis
134
+ estarán
135
+ estaría
136
+ estarías
137
+ estaríamos
138
+ estaríais
139
+ estarían
140
+ estaba
141
+ estabas
142
+ estábamos
143
+ estabais
144
+ estaban
145
+ estuve
146
+ estuviste
147
+ estuvo
148
+ estuvimos
149
+ estuvisteis
150
+ estuvieron
151
+ estuviera
152
+ estuvieras
153
+ estuviéramos
154
+ estuvierais
155
+ estuvieran
156
+ estuviese
157
+ estuvieses
158
+ estuviésemos
159
+ estuvieseis
160
+ estuviesen
161
+ estando
162
+ estado
163
+ estada
164
+ estados
165
+ estadas
166
+ estad
167
+ he
168
+ has
169
+ ha
170
+ hemos
171
+ habéis
172
+ han
173
+ haya
174
+ hayas
175
+ hayamos
176
+ hayáis
177
+ hayan
178
+ habré
179
+ habrás
180
+ habrá
181
+ habremos
182
+ habréis
183
+ habrán
184
+ habría
185
+ habrías
186
+ habríamos
187
+ habríais
188
+ habrían
189
+ había
190
+ habías
191
+ habíamos
192
+ habíais
193
+ habían
194
+ hube
195
+ hubiste
196
+ hubo
197
+ hubimos
198
+ hubisteis
199
+ hubieron
200
+ hubiera
201
+ hubieras
202
+ hubiéramos
203
+ hubierais
204
+ hubieran
205
+ hubiese
206
+ hubieses
207
+ hubiésemos
208
+ hubieseis
209
+ hubiesen
210
+ habiendo
211
+ habido
212
+ habida
213
+ habidos
214
+ habidas
215
+ soy
216
+ eres
217
+ es
218
+ somos
219
+ sois
220
+ son
221
+ sea
222
+ seas
223
+ seamos
224
+ seáis
225
+ sean
226
+ seré
227
+ serás
228
+ será
229
+ seremos
230
+ seréis
231
+ serán
232
+ sería
233
+ serías
234
+ seríamos
235
+ seríais
236
+ serían
237
+ era
238
+ eras
239
+ éramos
240
+ erais
241
+ eran
242
+ fui
243
+ fuiste
244
+ fue
245
+ fuimos
246
+ fuisteis
247
+ fueron
248
+ fuera
249
+ fueras
250
+ fuéramos
251
+ fuerais
252
+ fueran
253
+ fuese
254
+ fueses
255
+ fuésemos
256
+ fueseis
257
+ fuesen
258
+ sintiendo
259
+ sentido
260
+ sentida
261
+ sentidos
262
+ sentidas
263
+ siente
264
+ sentid
265
+ tengo
266
+ tienes
267
+ tiene
268
+ tenemos
269
+ tenéis
270
+ tienen
271
+ tenga
272
+ tengas
273
+ tengamos
274
+ tengáis
275
+ tengan
276
+ tendré
277
+ tendrás
278
+ tendrá
279
+ tendremos
280
+ tendréis
281
+ tendrán
282
+ tendría
283
+ tendrías
284
+ tendríamos
285
+ tendríais
286
+ tendrían
287
+ tenía
288
+ tenías
289
+ teníamos
290
+ teníais
291
+ tenían
292
+ tuve
293
+ tuviste
294
+ tuvo
295
+ tuvimos
296
+ tuvisteis
297
+ tuvieron
298
+ tuviera
299
+ tuvieras
300
+ tuviéramos
301
+ tuvierais
302
+ tuvieran
303
+ tuviese
304
+ tuvieses
305
+ tuviésemos
306
+ tuvieseis
307
+ tuviesen
308
+ teniendo
309
+ tenido
310
+ tenida
311
+ tenidos
312
+ tenidas
313
+ tened
@@ -0,0 +1,71 @@
1
+ module Mongoid
2
+ module Haystack
3
+ class Token
4
+ include Mongoid::Document
5
+
6
+ class << Token
7
+ def values_for(*args, &block)
8
+ string = args.join(' ')
9
+ values = string.scan(/[^\s]+/)
10
+ Stemming.stem(*values)
11
+ end
12
+
13
+ def add(value)
14
+ token = nil
15
+ created = nil
16
+
17
+ Haystack.find_or_create(
18
+ proc do
19
+ token = where(:value => value).first
20
+ created = false if token
21
+ token
22
+ end,
23
+
24
+ proc do
25
+ token = create!(:value => value)
26
+ created = true if token
27
+ token
28
+ end
29
+ )
30
+
31
+ token.inc(:count, 1)
32
+
33
+ Count[:tokens].inc(1) #if created
34
+
35
+ token
36
+ end
37
+
38
+ def sequence
39
+ Sequence.for(Token.name.scan(/[^:]+/).join('.').downcase)
40
+ end
41
+
42
+ def next_hex_id
43
+ "0x#{ hex = sequence.next.to_s(16) }"
44
+ end
45
+ end
46
+
47
+ field(:_id, :type => String, :default => proc{ Token.next_hex_id })
48
+ field(:value, :type => String)
49
+ field(:count, :type => Integer, :default => 0)
50
+
51
+ index({:value => 1}, {:unique => true})
52
+ index({:count => 1})
53
+
54
+ def frequency(n_tokens = Count[:tokens].value.to_f)
55
+ (count / n_tokens).round(2)
56
+ end
57
+
58
+ def frequency_bin(n_tokens = Count[:tokens].value.to_f)
59
+ (frequency(n_tokens) * 10).truncate
60
+ end
61
+
62
+ def rarity(n_tokens = Count[:tokens].value.to_f)
63
+ ((n_tokens - count) / n_tokens).round(2)
64
+ end
65
+
66
+ def rarity_bin(n_tokens = Count[:tokens].value.to_f)
67
+ (rarity(n_tokens) * 10).truncate
68
+ end
69
+ end
70
+ end
71
+ end