Module: Katello::Util::Search
- Defined in:
- app/lib/katello/util/search.rb
Constant Summary collapse
- DISABLED_LUCENE_SPECIAL_CHARS =
['-', ':']
Class Method Summary collapse
- .active_record_search_classes ⇒ Object
- .custom_analyzers ⇒ Object
- .custom_filters ⇒ Object
-
.filter_input(search) ⇒ Object
Filter the search input, escaping unsupported lucene syntax (e.g. usage of - operator).
- .get_subclasses(obj_class) ⇒ Object
Class Method Details
.active_record_search_classes ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'app/lib/katello/util/search.rb', line 40 def self.active_record_search_classes ignore_list = %w(Katello::CpConsumerUser Katello::Pool) classes = get_subclasses(ActiveRecord::Base) classes = classes.select { |c| !ignore_list.include?(c.name) && c.respond_to?(:index) } #we need index base classes first (TaskStatus) before child classes (PulpTaskStatus) initial_list = classes.select { |c| c.superclass == ActiveRecord::Base } subclass_list = classes - initial_list initial_list + subclass_list end |
.custom_analyzers ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 |
# File 'app/lib/katello/util/search.rb', line 6 def self.custom_analyzers { "kt_name_analyzer" => { "type" => "custom", "tokenizer" => "keyword" }, "autcomplete_name_analyzer" => { "type" => "custom", "tokenizer" => "keyword", "filter" => %w(standard lowercase ngram_filter) } } end |
.custom_filters ⇒ Object
20 21 22 23 24 25 26 27 28 29 |
# File 'app/lib/katello/util/search.rb', line 20 def self.custom_filters { "ngram_filter" => { "type" => "edgeNGram", "side" => "front", "min_gram" => 1, "max_gram" => 30 } } end |
.filter_input(search) ⇒ Object
Filter the search input, escaping unsupported lucene syntax (e.g. usage of - operator)
32 33 34 35 36 37 38 |
# File 'app/lib/katello/util/search.rb', line 32 def self.filter_input(search) return nil if search.nil? DISABLED_LUCENE_SPECIAL_CHARS.each do |chr| search = search.gsub(chr, '\\' + chr) end return search end |
.get_subclasses(obj_class) ⇒ Object
51 52 53 54 55 |
# File 'app/lib/katello/util/search.rb', line 51 def self.get_subclasses(obj_class) classes = obj_class.subclasses subs = classes.collect { |c| get_subclasses(c) }.flatten classes + subs end |