redis-asm 0.1.2 → 0.1.3
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +91 -49
- data/bench/bench.rb +14 -9
- data/bench/words.txt +308 -15
- data/lib/redis/asm/version.rb +1 -1
- data/lib/redis_asm.lua +1 -1
- data/spec/redis/asm/asm_spec.rb +4 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1296a6c8d2a42fc7d87351f9eaac1f585ca6e5bf
|
4
|
+
data.tar.gz: 0af4e7b83c99a6f69add46e56a86df26e4a78ecb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bd594d6f58f5fa449b45ab654323904f288b8fb25fd3ac4c3ae9733d69b174587d5be1b5252729a17e1e0d77b5c9f6ed5ac8616b951459a129101dade8e5ff1c
|
7
|
+
data.tar.gz: 123f18bd069198ab4fa9eeb48caeb9ce6d7f9c17b7d9e8c7ae77a7a8820e2de6e4fd5c304f5928825442eb904829bf5c57660dfdfb5c95171ee6fec7cc00cf03
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -27,11 +27,40 @@ Or install it yourself as:
|
|
27
27
|
|
28
28
|
## Usage
|
29
29
|
|
30
|
-
To initialize `Redis::Asm
|
30
|
+
To initialize `Redis::Asm`:
|
31
31
|
```ruby
|
32
|
+
require 'redis'
|
33
|
+
require 'redis-asm'
|
34
|
+
|
35
|
+
# Use Redis.current:
|
36
|
+
redis = Redis.current
|
37
|
+
|
38
|
+
# Initialize Redis with host and port:
|
32
39
|
redis = Redis.new(:host => REDIS_HOST, :port => REDIS_PORT)
|
40
|
+
|
33
41
|
asm = Redis::Asm.new(redis)
|
34
42
|
```
|
43
|
+
|
44
|
+
|
45
|
+
First, prepare test data:
|
46
|
+
```ruby
|
47
|
+
data = %w(example samples abampere zzi 東京都 京都府)
|
48
|
+
|
49
|
+
# key names
|
50
|
+
keys = {}
|
51
|
+
types = ['set', 'zset', 'hash', 'list']
|
52
|
+
types.each{|t| keys[t] = "testdata:#{t}"}
|
53
|
+
|
54
|
+
# reset Redis
|
55
|
+
keys.values.each{|v| redis.del v }
|
56
|
+
|
57
|
+
# set data to Redis
|
58
|
+
redis.sadd keys['set'], data
|
59
|
+
redis.zadd keys['zset'], data.map.with_index{|d, i| [i+1, d]}
|
60
|
+
redis.mapped_hmset keys['hash'], ({}).tap{|h| data.each_with_index{|x,i| h[i+1] = x}}
|
61
|
+
data.each{|d| redis.rpush keys['list'], d }
|
62
|
+
```
|
63
|
+
|
35
64
|
To execute fuzzy search from Redis collections:
|
36
65
|
```ruby
|
37
66
|
require 'json'
|
@@ -39,93 +68,106 @@ require 'yaml'
|
|
39
68
|
|
40
69
|
# asm.search(KEY, NEELDE, MAX_RESULTS=10)
|
41
70
|
|
42
|
-
# To search from SET
|
71
|
+
# To search from SET
|
72
|
+
result = asm.search(keys['set'], 'example')
|
73
|
+
# To search from LIST
|
74
|
+
result = asm.search(keys['list'], 'example')
|
43
75
|
|
44
|
-
result = asm.search(SET_OR_LIST_KEY, 'example')
|
45
76
|
puts JSON.parse(result).to_yaml
|
46
77
|
# ---
|
47
78
|
# - haystack: example
|
48
79
|
# match: 1
|
49
80
|
# - haystack: samples
|
50
|
-
# match: 0.
|
81
|
+
# match: 0.57142857142857
|
51
82
|
# - haystack: abampere
|
52
|
-
# match: 0.
|
53
|
-
.
|
54
|
-
.
|
83
|
+
# match: 0.5
|
55
84
|
|
56
85
|
# To search from HASH
|
57
86
|
|
58
87
|
# Redis::Asm matches HASH values
|
59
88
|
# each item has 'field' property
|
60
89
|
|
61
|
-
result = asm.search(HASH_KEY, '
|
90
|
+
result = asm.search(HASH_KEY, 'example')
|
62
91
|
puts JSON.parse(result).to_yaml
|
63
92
|
# ---
|
64
|
-
# - haystack:
|
65
|
-
# field: '
|
93
|
+
# - haystack: example
|
94
|
+
# field: '1'
|
66
95
|
# match: 1
|
67
|
-
# - haystack:
|
68
|
-
# field: '
|
69
|
-
# match: 0.
|
96
|
+
# - haystack: samples
|
97
|
+
# field: '2'
|
98
|
+
# match: 0.57142857142857
|
99
|
+
# - haystack: abampere
|
100
|
+
# field: '3'
|
101
|
+
# match: 0.5
|
70
102
|
|
71
103
|
# To search from ZSET
|
72
104
|
# each item has 'score' property
|
73
105
|
|
106
|
+
result = asm.search(ZSET_KEY, 'example')
|
107
|
+
puts JSON.parse(result).to_yaml
|
108
|
+
# ---
|
109
|
+
# - haystack: example
|
110
|
+
# score: '1'
|
111
|
+
# match: 1
|
112
|
+
# - haystack: samples
|
113
|
+
# score: '2'
|
114
|
+
# match: 0.57142857142857
|
115
|
+
# - haystack: abampere
|
116
|
+
# score: '3'
|
117
|
+
# match: 0.5
|
118
|
+
```
|
119
|
+
You can use UTF-8 multibyte chars:
|
120
|
+
```ruby
|
74
121
|
result = asm.search(ZSET_KEY, '東京都')
|
75
122
|
puts JSON.parse(result).to_yaml
|
76
123
|
# ---
|
77
124
|
# - haystack: "東京都"
|
78
|
-
# score: '126'
|
79
125
|
# match: 1
|
80
126
|
# - haystack: "京都府"
|
81
|
-
# score: '125'
|
82
127
|
# match: 0.33333333333333
|
83
128
|
```
|
84
129
|
## Performance
|
85
130
|
|
86
131
|
- PC: MBP 2.6 GHz Intel Core i5 16GM DD3 RAM
|
87
132
|
- OS: Mac OSX 10.9.5
|
88
|
-
-
|
133
|
+
- Ruby 2.1.5p273 [x86_64-darwin13.0]
|
89
134
|
- Redis server v=2.6.17 bits=64
|
90
135
|
|
91
|
-
|
92
|
-
# search from 10,000 items of SETS
|
93
|
-
# each item contains UTF-8 characters, and consists of between 1 and 30 chars.
|
94
|
-
% ruby search_bench.rb stone
|
95
|
-
user system total real
|
96
|
-
0.000000 0.000000 0.000000 ( 0.038567)
|
97
|
-
% ruby search_bench.rb 東京都
|
98
|
-
user system total real
|
99
|
-
0.000000 0.000000 0.000000 ( 0.022540)
|
100
|
-
|
101
|
-
% ruby search_bench.rb 弊社といたしましては
|
102
|
-
user system total real
|
103
|
-
0.000000 0.000000 0.000000 ( 0.063109)
|
104
|
-
```
|
105
|
-
|
106
|
-
Also you can try benchmarking `Redis::Asm` running `bench/bench.rb` in console.
|
136
|
+
You can try benchmarking `Redis::Asm` by running `./bench/bench.rb` in console.
|
107
137
|
That's the result I've got on my machine.
|
108
138
|
```sh
|
109
|
-
krt@mbp% ruby bench.rb
|
139
|
+
krt@mbp% ruby bench/bench.rb
|
110
140
|
user system total real
|
111
|
-
a : 1000 wd 0.000000 0.000000 0.000000 ( 0.
|
112
|
-
a : 10000 wd 0.000000 0.000000 0.000000 ( 0.
|
113
|
-
a : 100000 wd 0.000000 0.000000 0.000000 (
|
114
|
-
|
115
|
-
baz : 1000 wd 0.000000 0.000000 0.000000 ( 0.
|
116
|
-
baz : 10000 wd 0.000000 0.000000 0.000000 ( 0.
|
117
|
-
baz : 100000 wd 0.000000 0.000000 0.000000 ( 0.
|
118
|
-
|
119
|
-
rifmino : 1000 wd 0.000000 0.000000 0.000000 ( 0.
|
120
|
-
rifmino : 10000 wd 0.000000 0.000000 0.000000 ( 0.
|
121
|
-
rifmino : 100000 wd 0.000000 0.000000 0.000000 ( 0.
|
122
|
-
|
123
|
-
mskelngesol : 1000 wd 0.000000 0.000000 0.000000 ( 0.
|
124
|
-
mskelngesol : 10000 wd 0.000000 0.000000 0.000000 ( 0.
|
125
|
-
mskelngesol : 100000 wd 0.000000 0.000000 0.000000 ( 0.
|
141
|
+
a : 1000 wd 0.000000 0.000000 0.000000 ( 0.016898)
|
142
|
+
a : 10000 wd 0.000000 0.000000 0.000000 ( 0.165706)
|
143
|
+
a : 100000 wd 0.000000 0.000000 0.000000 ( 1.468973)
|
144
|
+
|
145
|
+
baz : 1000 wd 0.000000 0.000000 0.000000 ( 0.014015)
|
146
|
+
baz : 10000 wd 0.000000 0.000000 0.000000 ( 0.091153)
|
147
|
+
baz : 100000 wd 0.000000 0.000000 0.000000 ( 0.651317)
|
148
|
+
|
149
|
+
rifmino : 1000 wd 0.000000 0.000000 0.000000 ( 0.017831)
|
150
|
+
rifmino : 10000 wd 0.000000 0.000000 0.000000 ( 0.108233)
|
151
|
+
rifmino : 100000 wd 0.000000 0.000000 0.000000 ( 0.772444)
|
152
|
+
|
153
|
+
mskelngesol : 1000 wd 0.000000 0.000000 0.000000 ( 0.015920)
|
154
|
+
mskelngesol : 10000 wd 0.000000 0.000000 0.000000 ( 0.092513)
|
155
|
+
mskelngesol : 100000 wd 0.000000 0.000000 0.000000 ( 0.701796)
|
156
|
+
|
157
|
+
元気です : 1000 wd 0.000000 0.000000 0.000000 ( 0.002177)
|
158
|
+
元気です : 10000 wd 0.000000 0.000000 0.000000 ( 0.028857)
|
159
|
+
元気です : 100000 wd 0.000000 0.000000 0.000000 ( 0.279001)
|
126
160
|
```
|
127
|
-
*To be fair
|
161
|
+
*NOTE:* To be fair, it's suitable for less or eql than about 10,000 words, for Redis blocks it's requests while executing Lua script.
|
162
|
+
|
163
|
+
## Acknowledgment
|
128
164
|
|
165
|
+
- Words in test data from @atebits
|
166
|
+
https://github.com/atebits/Words
|
167
|
+
- Some japanese multibyte words from @gkovacs
|
168
|
+
https://github.com/gkovacs/japanese-morphology
|
169
|
+
- Levenshtein algorythm from @wooorm
|
170
|
+
https://github.com/wooorm/levenshtein-edit-distance
|
129
171
|
|
130
172
|
## Contributing
|
131
173
|
|
data/bench/bench.rb
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# -*- encoding: utf-8 -*-
|
2
3
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
3
4
|
require 'benchmark'
|
4
5
|
require 'redis'
|
5
6
|
require 'redis-asm'
|
7
|
+
require 'json'
|
6
8
|
|
7
9
|
dic =
|
8
10
|
File.read(File.expand_path('../words.txt', __FILE__)).
|
9
11
|
split("\n").
|
10
12
|
map(&:chomp)
|
11
|
-
dic.shift
|
13
|
+
3.times{dic.shift}
|
12
14
|
|
13
15
|
SKEY = 'redis:asm:bench'
|
14
16
|
|
@@ -22,20 +24,23 @@ end
|
|
22
24
|
r = Redis.current
|
23
25
|
asm = Redis::Asm.new(r)
|
24
26
|
|
25
|
-
needles = %w(a baz rifmino mskelngesol)
|
27
|
+
needles = %w(a baz rifmino mskelngesol 元気です)
|
26
28
|
|
27
29
|
Benchmark.bm(22) do |x|
|
28
30
|
needles.each do |needle|
|
29
|
-
[1000, 10000,
|
31
|
+
[1000, 10000, 100000].each do |s|
|
30
32
|
setup_redis SKEY, dic, s
|
31
33
|
x.report("%11s : %6d wd"%[needle, s]) { asm.search(SKEY, needle) }
|
32
34
|
end
|
35
|
+
puts ""
|
33
36
|
end
|
34
37
|
end
|
35
38
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
39
|
+
# output results
|
40
|
+
# puts "results from 100000\n"
|
41
|
+
# setup_redis SKEY, dic, 100000
|
42
|
+
# needles.each do |needle|
|
43
|
+
# puts "#{needle} :"
|
44
|
+
# p JSON.parse(asm.search(SKEY, needle))
|
45
|
+
# puts ""
|
46
|
+
# end
|
data/bench/words.txt
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# Words from @atebits's https://github.com/atebits/Words
|
2
|
+
# Some japanese multibyte words from @gkovacs's https://github.com/gkovacs/japanese-morphology/blob/master/japanese-words.txt
|
2
3
|
aa
|
3
4
|
aah
|
4
5
|
aahed
|
@@ -39121,7 +39122,6 @@ heugh
|
|
39121
39122
|
heureka
|
39122
39123
|
heuretics
|
39123
39124
|
heurism
|
39124
|
-
heurisms
|
39125
39125
|
heuristics
|
39126
39126
|
hewable
|
39127
39127
|
hewings
|
@@ -39188,7 +39188,6 @@ hexereis
|
|
39188
39188
|
hexes
|
39189
39189
|
hexing
|
39190
39190
|
hexings
|
39191
|
-
hexone
|
39192
39191
|
hexones
|
39193
39192
|
hexosan
|
39194
39193
|
hexoses
|
@@ -39223,7 +39222,6 @@ hiccup
|
|
39223
39222
|
hiccuping
|
39224
39223
|
hiccupped
|
39225
39224
|
hiccupping
|
39226
|
-
hiccupy
|
39227
39225
|
hick
|
39228
39226
|
hickie
|
39229
39227
|
hickish
|
@@ -39339,7 +39337,6 @@ hillings
|
|
39339
39337
|
hilloa
|
39340
39338
|
hilloaed
|
39341
39339
|
hilloas
|
39342
|
-
hillocky
|
39343
39340
|
hills
|
39344
39341
|
hillsides
|
39345
39342
|
hillwalker
|
@@ -39424,7 +39421,6 @@ hippydoms
|
|
39424
39421
|
hipshot
|
39425
39422
|
hipsterisms
|
39426
39423
|
hipsters
|
39427
|
-
hipt
|
39428
39424
|
hirable
|
39429
39425
|
hiragana
|
39430
39426
|
hirages
|
@@ -39482,7 +39478,6 @@ historiated
|
|
39482
39478
|
historically
|
39483
39479
|
historicise
|
39484
39480
|
historicised
|
39485
|
-
historicises
|
39486
39481
|
historicism
|
39487
39482
|
historicisms
|
39488
39483
|
historicities
|
@@ -39540,7 +39535,6 @@ hobber
|
|
39540
39535
|
hobbers
|
39541
39536
|
hobbies
|
39542
39537
|
hobbish
|
39543
|
-
hobble
|
39544
39538
|
hobblebushes
|
39545
39539
|
hobbledehoyish
|
39546
39540
|
hobbledehoyism
|
@@ -39594,7 +39588,6 @@ hoggs
|
|
39594
39588
|
hoghoods
|
39595
39589
|
hoglike
|
39596
39590
|
hogmane
|
39597
|
-
hognose
|
39598
39591
|
hognoses
|
39599
39592
|
hognut
|
39600
39593
|
hognuts
|
@@ -39661,7 +39654,6 @@ hollowly
|
|
39661
39654
|
holocaust
|
39662
39655
|
holocaustal
|
39663
39656
|
holocausts
|
39664
|
-
hologram
|
39665
39657
|
holograph
|
39666
39658
|
holographed
|
39667
39659
|
holographer
|
@@ -39719,7 +39711,6 @@ homeothermies
|
|
39719
39711
|
homeotypic
|
39720
39712
|
homeowners
|
39721
39713
|
homeownership
|
39722
|
-
homepages
|
39723
39714
|
homeplace
|
39724
39715
|
homeport
|
39725
39716
|
homeporting
|
@@ -39803,7 +39794,6 @@ homologated
|
|
39803
39794
|
homologating
|
39804
39795
|
homologation
|
39805
39796
|
homologic
|
39806
|
-
homologises
|
39807
39797
|
homologising
|
39808
39798
|
homologizer
|
39809
39799
|
homologizers
|
@@ -99599,7 +99589,6 @@ yumpies
|
|
99599
99589
|
yunx
|
99600
99590
|
yuppiedom
|
99601
99591
|
yuppiedoms
|
99602
|
-
yuppy
|
99603
99592
|
yups
|
99604
99593
|
yurt
|
99605
99594
|
yus
|
@@ -99613,7 +99602,6 @@ zabetas
|
|
99613
99602
|
zabras
|
99614
99603
|
zacks
|
99615
99604
|
zaffar
|
99616
|
-
zaffars
|
99617
99605
|
zaffir
|
99618
99606
|
zagged
|
99619
99607
|
zagging
|
@@ -99998,4 +99986,309 @@ zymotics
|
|
99998
99986
|
zymurgies
|
99999
99987
|
zythum
|
100000
99988
|
zyzzyvas
|
100001
|
-
zzz
|
99989
|
+
zzz
|
99990
|
+
行く
|
99991
|
+
見る
|
99992
|
+
行き
|
99993
|
+
見た
|
99994
|
+
見て
|
99995
|
+
話す
|
99996
|
+
話して
|
99997
|
+
行って
|
99998
|
+
行きます
|
99999
|
+
話します
|
100000
|
+
話せる
|
100001
|
+
話せます
|
100002
|
+
話せません
|
100003
|
+
話さなかった
|
100004
|
+
読めない
|
100005
|
+
読めなかった
|
100006
|
+
読みました
|
100007
|
+
見ました
|
100008
|
+
見ませんでした
|
100009
|
+
読もう
|
100010
|
+
泳ごう
|
100011
|
+
読めば
|
100012
|
+
泳げば
|
100013
|
+
します
|
100014
|
+
する
|
100015
|
+
しない
|
100016
|
+
しよう
|
100017
|
+
します
|
100018
|
+
しましょう
|
100019
|
+
しなかった
|
100020
|
+
しませんでした
|
100021
|
+
できます
|
100022
|
+
できません
|
100023
|
+
できる
|
100024
|
+
すれば
|
100025
|
+
見れば
|
100026
|
+
見られる
|
100027
|
+
行きましょう
|
100028
|
+
来ます
|
100029
|
+
きます
|
100030
|
+
来ない
|
100031
|
+
こない
|
100032
|
+
来て
|
100033
|
+
きて
|
100034
|
+
くる
|
100035
|
+
来る
|
100036
|
+
こられる
|
100037
|
+
来られる
|
100038
|
+
恥ずかしかった
|
100039
|
+
好きだった
|
100040
|
+
好き
|
100041
|
+
広い
|
100042
|
+
あります
|
100043
|
+
ありません
|
100044
|
+
なかった
|
100045
|
+
漢字
|
100046
|
+
面白そう
|
100047
|
+
見ています
|
100048
|
+
見ないでください
|
100049
|
+
食べないでください
|
100050
|
+
食べるの
|
100051
|
+
日本人みたい
|
100052
|
+
覚えていません
|
100053
|
+
開けている
|
100054
|
+
強くなる
|
100055
|
+
日本人になる
|
100056
|
+
きれいになる
|
100057
|
+
卒業するつもりです
|
100058
|
+
行くつもりだった
|
100059
|
+
日本語で
|
100060
|
+
泳いだり
|
100061
|
+
寝たり
|
100062
|
+
行ったら
|
100063
|
+
買ったら
|
100064
|
+
食べたら
|
100065
|
+
読んだら
|
100066
|
+
食べたい
|
100067
|
+
食べたくない
|
100068
|
+
食べたくなかった
|
100069
|
+
面白くなかった
|
100070
|
+
食べたがっています
|
100071
|
+
飲みたがっていません
|
100072
|
+
読みたがっていませんでした
|
100073
|
+
来なかったんです
|
100074
|
+
食べられなかったんです
|
100075
|
+
行きたいんです
|
100076
|
+
行きたくないんです
|
100077
|
+
行きたくなかったの
|
100078
|
+
学生なんです
|
100079
|
+
学生なの
|
100080
|
+
書いたんです
|
100081
|
+
食べすぎました
|
100082
|
+
食べすぎたんです
|
100083
|
+
飲みすぎないでください
|
100084
|
+
勉強しなくてはいけません
|
100085
|
+
勉強しなくちゃいけません
|
100086
|
+
勉強してはいけません
|
100087
|
+
勉強しちゃいけません
|
100088
|
+
食べた方がいい
|
100089
|
+
食べた方がいいです
|
100090
|
+
食べた方がいいでしょう
|
100091
|
+
食べたほうがいいです
|
100092
|
+
食べたほうがいい
|
100093
|
+
食べたほうがいいでしょう
|
100094
|
+
食べない方がいい
|
100095
|
+
食べない方がいいです
|
100096
|
+
食べない方がいいでしょう
|
100097
|
+
食べないほうがいい
|
100098
|
+
食べないほうがいいです
|
100099
|
+
食べないほうがいいでしょう
|
100100
|
+
降るでしょう
|
100101
|
+
日本人でしょう
|
100102
|
+
好きでしょう
|
100103
|
+
寒くないでしょう
|
100104
|
+
寒いでしょう
|
100105
|
+
寒かったんです
|
100106
|
+
寒そうです
|
100107
|
+
元気そうです
|
100108
|
+
難しくなさそう
|
100109
|
+
いいです
|
100110
|
+
いいでしょう
|
100111
|
+
よかった
|
100112
|
+
よくなかった
|
100113
|
+
よさそうです
|
100114
|
+
聞いてみました
|
100115
|
+
聞いてみましょう
|
100116
|
+
飲んでみないでください
|
100117
|
+
飲んでみましょう
|
100118
|
+
夏かもしれません
|
100119
|
+
夏かもしれない
|
100120
|
+
日本人かもしれません
|
100121
|
+
日本人かも知れない
|
100122
|
+
来ないかもしれません
|
100123
|
+
来られないかもしれません
|
100124
|
+
行くかもしれません
|
100125
|
+
面白いかもしれません
|
100126
|
+
元気かもしれません
|
100127
|
+
簡単かもしれません
|
100128
|
+
勉強したらどう
|
100129
|
+
飲んだらどうです
|
100130
|
+
食べましたらどうです
|
100131
|
+
二百
|
100132
|
+
二百人
|
100133
|
+
2125人
|
100134
|
+
100人
|
100135
|
+
11時間
|
100136
|
+
11時間半
|
100137
|
+
一つ目
|
100138
|
+
1つ目
|
100139
|
+
三匹しか
|
100140
|
+
3匹しか
|
100141
|
+
一年間しか
|
100142
|
+
一年間も
|
100143
|
+
二台しか
|
100144
|
+
2台も
|
100145
|
+
結婚しよう
|
100146
|
+
手伝おう
|
100147
|
+
手伝いましょう
|
100148
|
+
勉強しておきました
|
100149
|
+
買っておきました
|
100150
|
+
書いておきませんでした
|
100151
|
+
予約しておかなかったんです
|
100152
|
+
勉強しておかなくてはいけません
|
100153
|
+
勉強しておかなくちゃいけません
|
100154
|
+
予約しなくてもいい
|
100155
|
+
予約しておかなくてもいい
|
100156
|
+
予約しておかなくても良い
|
100157
|
+
予約しておかなくてもいいです
|
100158
|
+
予約しておかなくても良いです
|
100159
|
+
予約しておかなくてもいいでしょう
|
100160
|
+
予約しておかなくても良いでしょう
|
100161
|
+
貸してあげましょう
|
100162
|
+
手伝ってくれました
|
100163
|
+
手伝ってもらいました
|
100164
|
+
手伝っていただけません
|
100165
|
+
待ってくれません
|
100166
|
+
待ってください
|
100167
|
+
取ってくれない
|
100168
|
+
勉強しなくてすみませんでした
|
100169
|
+
遅れてすみません
|
100170
|
+
楽しそうです
|
100171
|
+
親切だそうです
|
100172
|
+
親切だそうだ
|
100173
|
+
親切だったそうです
|
100174
|
+
親切だったそうだ
|
100175
|
+
なかったそうです
|
100176
|
+
先生だったそうです
|
100177
|
+
先生だそうです
|
100178
|
+
寒かったそうです
|
100179
|
+
寒くなかったそうです
|
100180
|
+
死ぬそうです
|
100181
|
+
読んだそうです
|
100182
|
+
読まなかったそうです
|
100183
|
+
閉まっているそうです
|
100184
|
+
閉まっていないそうです
|
100185
|
+
閉まっていなかったそうです
|
100186
|
+
好きだそうです
|
100187
|
+
行く前に
|
100188
|
+
勉強する前に
|
100189
|
+
行ってから
|
100190
|
+
勉強してから
|
100191
|
+
読んでしまいました
|
100192
|
+
忘れてしまいました
|
100193
|
+
忘れちゃったんです
|
100194
|
+
予約しておかなくてすみませんでした
|
100195
|
+
死んじゃったんです
|
100196
|
+
死んでしまいました
|
100197
|
+
歌いながら
|
100198
|
+
聞きながら
|
100199
|
+
運転しながら
|
100200
|
+
すれば
|
100201
|
+
行けば
|
100202
|
+
買えば
|
100203
|
+
よかったです
|
100204
|
+
手伝ってくれて
|
100205
|
+
閉まっているはずです
|
100206
|
+
閉まっているはずでした
|
100207
|
+
閉まっているはずだった
|
100208
|
+
行かなかったはずです
|
100209
|
+
行かなかったはずでした
|
100210
|
+
行かなかったはずだった
|
100211
|
+
面白いはずです
|
100212
|
+
元気なはずです
|
100213
|
+
日本人のはずです
|
100214
|
+
使いやすい
|
100215
|
+
読みやすかった
|
100216
|
+
読みやすくなかった
|
100217
|
+
読みやすくなかったんです
|
100218
|
+
読みやすくなかったそうです
|
100219
|
+
食べにくい
|
100220
|
+
食べにくかった
|
100221
|
+
使いにくくなかった
|
100222
|
+
使いにくくなかったんです
|
100223
|
+
使いにくくなかったそうです
|
100224
|
+
東京のような
|
100225
|
+
魚のように
|
100226
|
+
電話しなさい
|
100227
|
+
聞きなさい
|
100228
|
+
入れなさい
|
100229
|
+
予約してあります
|
100230
|
+
買ってあります
|
100231
|
+
簡単にする
|
100232
|
+
寒くする
|
100233
|
+
元気になってほしい
|
100234
|
+
下さいました
|
100235
|
+
元気じゃない
|
100236
|
+
元気じゃなかった
|
100237
|
+
元気でわありません
|
100238
|
+
元気じゃありません
|
100239
|
+
医者でございます
|
100240
|
+
結婚しております
|
100241
|
+
勉強しております
|
100242
|
+
ご説明する
|
100243
|
+
ご注意下さい
|
100244
|
+
お会いします
|
100245
|
+
お会いしました
|
100246
|
+
お貸しするつもりです
|
100247
|
+
お借りしました
|
100248
|
+
お取りください
|
100249
|
+
お使い下さい
|
100250
|
+
お読みになってください
|
100251
|
+
食べないで
|
100252
|
+
食べられる
|
100253
|
+
行かれる
|
100254
|
+
待たれる
|
100255
|
+
読まれる
|
100256
|
+
泳がれる
|
100257
|
+
買われる
|
100258
|
+
話される
|
100259
|
+
死なれる
|
100260
|
+
取られる
|
100261
|
+
遊ばれる
|
100262
|
+
こられる
|
100263
|
+
される
|
100264
|
+
食べさせる
|
100265
|
+
行かせる
|
100266
|
+
待たせる
|
100267
|
+
読ませる
|
100268
|
+
泳がせる
|
100269
|
+
買わせる
|
100270
|
+
話させる
|
100271
|
+
死なせる
|
100272
|
+
取らせる
|
100273
|
+
遊ばせる
|
100274
|
+
こさせる
|
100275
|
+
させる
|
100276
|
+
食べさせられる
|
100277
|
+
話させられる
|
100278
|
+
書かされる
|
100279
|
+
読まされる
|
100280
|
+
泳がされる
|
100281
|
+
買わされる
|
100282
|
+
立たされる
|
100283
|
+
取らされる
|
100284
|
+
呼ばされる
|
100285
|
+
させられる
|
100286
|
+
こさせられる
|
100287
|
+
話させてくれませんでした
|
100288
|
+
漫然と
|
100289
|
+
堂々と
|
100290
|
+
愕然と
|
100291
|
+
唖然と
|
100292
|
+
颯爽と
|
100293
|
+
黙々と
|
100294
|
+
依然と
|
data/lib/redis/asm/version.rb
CHANGED
data/lib/redis_asm.lua
CHANGED
data/spec/redis/asm/asm_spec.rb
CHANGED
@@ -57,8 +57,8 @@ describe Redis::Asm do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
it "result has fuzzy matched string" do
|
60
|
-
expect(result_set[1]).to eq({"haystack"=>"samples", "match"=>0.
|
61
|
-
expect(result_list[1]).to eq({"haystack"=>"samples", "match"=>0.
|
60
|
+
expect(result_set[1]).to eq({"haystack"=>"samples", "match"=>0.57142857142857})
|
61
|
+
expect(result_list[1]).to eq({"haystack"=>"samples", "match"=>0.57142857142857})
|
62
62
|
end
|
63
63
|
|
64
64
|
it "result size must be default limit(10)" do
|
@@ -97,8 +97,8 @@ describe Redis::Asm do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
it "result has fuzzy matched string, zset has 'score' and hash has 'field'" do
|
100
|
-
expect(result_zset[1]).to eq({"haystack"=>"samples", "score"=>"119", "match"=>0.
|
101
|
-
expect(result_hash[1]).to eq({"haystack"=>"samples", "field"=>"119", "match"=>0.
|
100
|
+
expect(result_zset[1]).to eq({"haystack"=>"samples", "score"=>"119", "match"=>0.57142857142857})
|
101
|
+
expect(result_hash[1]).to eq({"haystack"=>"samples", "field"=>"119", "match"=>0.57142857142857})
|
102
102
|
end
|
103
103
|
|
104
104
|
it "result size must be default limit(10)" do
|