mongoid-haystack 1.0.0

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 (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