Created
September 10, 2010 17:35
Revisions
-
antirez revised this gist
Sep 13, 2010 . 1 changed file with 2 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -31,7 +31,7 @@ def complete(r,prefix,count) while results.length != count range = r.zrange(:compl,start,start+rangelen-1) start += rangelen break if !range or range.length == 0 range.each {|entry| minlen = [entry.length,prefix.length].min if entry[0...minlen] != prefix[0...minlen] @@ -46,6 +46,6 @@ def complete(r,prefix,count) return results end complete(r,"marcell",50).each{|res| puts res } -
antirez revised this gist
Sep 13, 2010 . 1 changed file with 4 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -30,10 +30,12 @@ def complete(r,prefix,count) return [] if !start while results.length != count range = r.zrange(:compl,start,start+rangelen-1) start += rangelen break if range.length == 0 range.each {|entry| minlen = [entry.length,prefix.length].min if entry[0...minlen] != prefix[0...minlen] count = results.count break end if entry[-1..-1] == "*" and results.length != count -
antirez revised this gist
Sep 13, 2010 . 1 changed file with 5 additions and 2 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -32,7 +32,10 @@ def complete(r,prefix,count) range = r.zrange(:compl,start,start+rangelen-1) break if range.length == 0 range.each {|entry| if entry.length >= prefix.length and entry[0...prefix.length] != prefix count = results.length break end if entry[-1..-1] == "*" and results.length != count results << entry[0...-1] end @@ -41,6 +44,6 @@ def complete(r,prefix,count) return results end complete(r,"mar",10).each{|res| puts res } -
antirez revised this gist
Sep 13, 2010 . 1 changed file with 2 additions and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -32,6 +32,7 @@ def complete(r,prefix,count) range = r.zrange(:compl,start,start+rangelen-1) break if range.length == 0 range.each {|entry| break if entry.length >= prefix.length and entry[0...prefix.length] != prefix if entry[-1..-1] == "*" and results.length != count results << entry[0...-1] end @@ -40,6 +41,6 @@ def complete(r,prefix,count) return results end complete(r,"marce",10).each{|res| puts res } -
antirez created this gist
Sep 10, 2010 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,45 @@ # compl1.rb - Redis autocomplete example # download female-names.txt from http://antirez.com/misc/female-names.txt require 'rubygems' require 'redis' r = Redis.new # Create the completion sorted set if !r.exists(:compl) puts "Loading entries in the Redis DB\n" File.new('female-names.txt').each_line{|n| n.strip! (1..(n.length)).each{|l| prefix = n[0...l] r.zadd(:compl,0,prefix) } r.zadd(:compl,0,n+"*") } else puts "NOT loading entries, there is already a 'compl' key\n" end # Complete the string "mar" def complete(r,prefix,count) results = [] rangelen = 50 # This is not random, try to get replies < MTU size start = r.zrank(:compl,prefix) return [] if !start while results.length != count range = r.zrange(:compl,start,start+rangelen-1) break if range.length == 0 range.each {|entry| if entry[-1..-1] == "*" and results.length != count results << entry[0...-1] end } end return results end complete(r,"mar",10).each{|res| puts res }