common_methods.rb
2.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
module ActsAsSolr #:nodoc:
module CommonMethods
# Converts field types into Solr types
def get_solr_field_type(field_type)
if field_type.is_a?(Symbol)
case field_type
when :float
return "f"
when :integer
return "i"
when :boolean
return "b"
when :string
return "s"
when :date
return "d"
when :range_float
return "rf"
when :range_integer
return "ri"
when :facet
return "facet"
when :text
return "t"
else
raise "Unknown field_type symbol: #{field_type}"
end
elsif field_type.is_a?(String)
return field_type
else
raise "Unknown field_type class: #{field_type.class}: #{field_type}"
end
end
# Sets a default value when value being set is nil.
def set_value_if_nil(field_type)
case field_type
when "b", :boolean
return "false"
when "s", "t", "d", :date, :string, :text
return ""
when "f", "rf", :float, :range_float
return 0.00
when "i", "ri", :integer, :range_integer
return 0
else
return ""
end
end
# Sends an add command to Solr
def solr_add(add_xml)
ActsAsSolr::Post.execute(Solr::Request::AddDocument.new(add_xml))
end
# Sends the delete command to Solr
def solr_delete(solr_ids)
ActsAsSolr::Post.execute(Solr::Request::Delete.new(:id => solr_ids))
end
# Sends the commit command to Solr
def solr_commit
ActsAsSolr::Post.execute(Solr::Request::Commit.new)
end
# Optimizes the Solr index. Solr says:
#
# Optimizations can take nearly ten minutes to run.
# We are presuming optimizations should be run once following large
# batch-like updates to the collection and/or once a day.
#
# One of the solutions for this would be to create a cron job that
# runs every day at midnight and optmizes the index:
# 0 0 * * * /your_rails_dir/script/runner -e production "Model.solr_optimize"
#
def solr_optimize
ActsAsSolr::Post.execute(Solr::Request::Optimize.new)
end
# Returns the id for the given instance
def record_id(object)
eval "object.#{object.class.primary_key}"
end
end
end