redis-asm 0.1.2 → 0.1.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|