Module: Katello::Util::Search

Defined in:
app/lib/katello/util/search.rb

Constant Summary collapse

DISABLED_LUCENE_SPECIAL_CHARS =
['-', ':']

Class Method Summary collapse

Class Method Details

.active_record_search_classesObject



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_analyzersObject



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_filtersObject



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