Class: QueryHouse
- Inherits:
-
Object
- Object
- QueryHouse
- Defined in:
- lib/common/query_house.rb
Overview
QueryHouse 以线上50w+的真实query集为基础,随机选出N条数据,50w 是目前的数据量,欢迎对这个数据进行增加、删除、修改、优化,QueryHouse 支持随机读数据文件,所以不用担心数据量太大对程序照成性能或资源上的影响 :) QueryHouse 是一个单例类,使用时可以直接调用其静态方法
Constant Summary collapse
- @@instance =
nil
Class Method Summary collapse
-
.get_a_query ⇒ Object
功能: 随机取得一个query,静态方法哦!!!.
- .get_instance ⇒ Object
-
.get_n_query(n = 1) ⇒ Object
功能: 随机取得n个query,静态方法哦!!!.
Instance Method Summary collapse
-
#get_a_rand_query ⇒ Object
功能: 随机取得一个query,一般情况请使用get_query静态方法.
-
#initialize(query_file) ⇒ QueryHouse
constructor
A new instance of QueryHouse.
Constructor Details
#initialize(query_file) ⇒ QueryHouse
Returns a new instance of QueryHouse.
22 23 24 25 26 27 |
# File 'lib/common/query_house.rb', line 22 def initialize query_file raise "query.house[#{query_file}] not exist!" unless File.file? query_file @query_file = File.new query_file, "r" @byte_size = File.size @query_file #@size = @query_file.read.count "\n" end |
Class Method Details
.get_a_query ⇒ Object
功能:
随机取得一个query,静态方法哦!!!
参数解释:
-
return 一个query,String类型
-
raise 如果失败就抛异常
Example:
p QueryHouse.get_a_query #=> “gp超霸电池”
83 84 85 |
# File 'lib/common/query_house.rb', line 83 def self.get_a_query get_instance.get_a_rand_query end |
.get_instance ⇒ Object
17 18 19 20 |
# File 'lib/common/query_house.rb', line 17 def self.get_instance @@instance = new("#{$SUPER_ROOT}/data/query.house") unless @@instance @@instance end |
.get_n_query(n = 1) ⇒ Object
功能:
随机取得n个query,静态方法哦!!!
参数解释:
-
n query数量,默认为1
-
return query的数组
-
raise 如果失败就抛异常
Example:
p QueryHouse.get_n_query 3 #=> [“gp超霸电池”,“乔四爷的坑(4)”,“经典励志格言”]
64 65 66 67 68 69 70 71 |
# File 'lib/common/query_house.rb', line 64 def self.get_n_query n=1 instance = get_instance arr = [] n.times do arr << instance.get_a_rand_query end return arr end |
Instance Method Details
#get_a_rand_query ⇒ Object
功能:
随机取得一个query,一般情况请使用get_query静态方法
参数解释:
-
return 返回一个随机query,String类型,
-
raise 如果失败就抛异常
Example:
qs = QueryHouse.get_instance p qs.get_a_rand_query #=> “gp超霸电池”
41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/common/query_house.rb', line 41 def get_a_rand_query # 最多尝试3次 3.times do @query_file.seek rand(@byte_size) # 跳过seek所在的一行 @query_file.gets line = @query_file.gets return line.rstrip.force_encoding("gbk") unless line.nil? end raise "Sorry! I can't get any query from file[#{@query_file}]" end |