lib/social_stream/search.rb in social_stream-base-1.1.11 vs lib/social_stream/search.rb in social_stream-base-2.0.0.beta1
- old
+ new
@@ -1,17 +1,26 @@
module SocialStream
module Search
+ #TODO: sync with ThinkingSphinx min_infix_len and min_prefix_len options
+ MIN_QUERY = 3
+
class << self
def keys(search_type)
case search_type
when :quick
SocialStream.quick_search_models
when :extended
extended_search_models.keys
end
end
+ def options_for_type_select
+ keys(:extended).map{ |k|
+ [ I18n.t("#{ k }", count: :other), k ]
+ }.unshift([ I18n.t("search.show_all"), "" ])
+ end
+
def models(search_type, key = nil)
case search_type
when :quick
quick_search_models
when :extended
@@ -26,10 +35,12 @@
end
end
else
extended_search_models.values.flatten
end
+ when :repository
+ SocialStream.repository_models.map{ |m| m.to_s.classify.constantize }
else
raise "Unknown search type #{ search_type }"
end
end
@@ -39,11 +50,10 @@
def count(query, subject, options = {})
ThinkingSphinx.count *args_for_search(query, subject, options)
end
-
private
def quick_search_models
@quick_search_models ||=
parse_quick_search_models
@@ -71,24 +81,24 @@
# :user => [ User ],
# :resource => [ Post, Comment, Picture ]
# }
#
def parse_extended_search_models
- SocialStream.extended_search_models.inject({}) do |hash, entry|
- case entry
- when Hash
- hash.update entry.inject({}){ |h, e|
- h[e.first] = Array.wrap(e.last).map{ |f| f.to_s.classify.constantize }
- h
- }
- when Symbol
- hash[entry] = Array.wrap(entry.to_s.classify.constantize)
- else
- raise "Unknown entry in config.extended_search_models #{ entry }"
- end
-
- hash
+ SocialStream.extended_search_models.inject({}) do |hash, entry|
+ case entry
+ when Hash
+ hash.update entry.inject({}){ |h, e|
+ h[e.first] = Array.wrap(e.last).map{ |f| f.to_s.classify.constantize }
+ h
+ }
+ when Symbol
+ hash[entry] = Array.wrap(entry.to_s.classify.constantize)
+ else
+ raise "Unknown entry in config.extended_search_models #{ entry }"
end
+
+ hash
+ end
end
def args_for_search(query, subject, options = {})
options[:mode] ||= :extended