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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0626024600489175dea0bd4cd3a0e831d96efa8b
4
- data.tar.gz: a507844306bc72e640c6c033082914f55ac0deeb
3
+ metadata.gz: 1296a6c8d2a42fc7d87351f9eaac1f585ca6e5bf
4
+ data.tar.gz: 0af4e7b83c99a6f69add46e56a86df26e4a78ecb
5
5
  SHA512:
6
- metadata.gz: b2bf27337bd08eae3ebda2e0ec2bcfd45895d9dedaa95aeceaa00ae4c61a7e5d02d299313c0a8cf1801a79d367670bd278d7da3aaf10d7171a637d1f4658b197
7
- data.tar.gz: 890bd6fc69350513c8ebd96a49fcc867b08053685cfa92c780cd669a48e55dbc7a9b371d4c2952de6ab80a56c10c31892ecd683af3bc1d28fa38e44b3594cc4b
6
+ metadata.gz: bd594d6f58f5fa449b45ab654323904f288b8fb25fd3ac4c3ae9733d69b174587d5be1b5252729a17e1e0d77b5c9f6ed5ac8616b951459a129101dade8e5ff1c
7
+ data.tar.gz: 123f18bd069198ab4fa9eeb48caeb9ce6d7f9c17b7d9e8c7ae77a7a8820e2de6e4fd5c304f5928825442eb904829bf5c57660dfdfb5c95171ee6fec7cc00cf03
data/.gitignore CHANGED
@@ -12,3 +12,4 @@
12
12
  *.o
13
13
  *.a
14
14
  mkmf.log
15
+ sample.rb
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` with host and port:
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 or LIST
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.5
81
+ # match: 0.57142857142857
51
82
  # - haystack: abampere
52
- # match: 0.42857142857143
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: '126'
93
+ # - haystack: example
94
+ # field: '1'
66
95
  # match: 1
67
- # - haystack: "京都府"
68
- # field: '125'
69
- # match: 0.33333333333333
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
- - ruby 2.1.5p273 [x86_64-darwin13.0]
133
+ - Ruby 2.1.5p273 [x86_64-darwin13.0]
89
134
  - Redis server v=2.6.17 bits=64
90
135
 
91
- ```bash
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.003485)
112
- a : 10000 wd 0.000000 0.000000 0.000000 ( 0.025130)
113
- a : 100000 wd 0.000000 0.000000 0.000000 ( 0.213464)
114
-
115
- baz : 1000 wd 0.000000 0.000000 0.000000 ( 0.010732)
116
- baz : 10000 wd 0.000000 0.000000 0.000000 ( 0.073628)
117
- baz : 100000 wd 0.000000 0.000000 0.000000 ( 0.565700)
118
-
119
- rifmino : 1000 wd 0.000000 0.000000 0.000000 ( 0.014601)
120
- rifmino : 10000 wd 0.000000 0.000000 0.000000 ( 0.082726)
121
- rifmino : 100000 wd 0.000000 0.000000 0.000000 ( 0.680512)
122
-
123
- mskelngesol : 1000 wd 0.000000 0.000000 0.000000 ( 0.014717)
124
- mskelngesol : 10000 wd 0.000000 0.000000 0.000000 ( 0.086301)
125
- mskelngesol : 100000 wd 0.000000 0.000000 0.000000 ( 0.623105)
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,* it's suitable for less or eql than about 10,000 words, for Redis blocks it's requests while executing Lua script.
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, 50000, 100000].each do |s|
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
- # words from https://github.com/atebits/Words
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
+ 依然と
@@ -1,5 +1,5 @@
1
1
  class Redis
2
2
  class Asm
3
- VERSION = "0.1.2"
3
+ VERSION = "0.1.3"
4
4
  end
5
5
  end
data/lib/redis_asm.lua CHANGED
@@ -96,7 +96,7 @@ local function split_into_utf8_bytes(str)
96
96
 
97
97
  for i = 1, #str do
98
98
  offset_pos = i + offset
99
- if offset_pos >= #str then
99
+ if offset_pos > #str then
100
100
  break
101
101
  end
102
102
 
@@ -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.5})
61
- expect(result_list[1]).to eq({"haystack"=>"samples", "match"=>0.5})
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.5})
101
- expect(result_hash[1]).to eq({"haystack"=>"samples", "field"=>"119", "match"=>0.5})
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-asm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Masato Yamaguchi