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