Módulo: Mongoid::SearchIndexable::ClassMethods

Definido em:
lib/mongoid/search_indexable.rb

Visão geral

Implementações para os métodos de nível de classe do recurso.

Recolhimento do Resumo do método de instância

Detalhes do método de instância

#create_search_indexes ➤ Array<String>

Solicitar a criação de todos os índices de pesquisa registrados. Observe que os índices de pesquisa são criados de forma assíncrona e podem levar alguns minutos para ficarem totalmente disponíveis.

Retorna:

  • (Array<String>)

    Os nomes dos índices de pesquisa.



65
66
67
68
69
# Arquivo 'lib/mongoid/search_indexable.rb', linha 65

def create_search_indexes
  Método se search_index_specs.vazio?

  collection.search_indexes.create_many(search_index_specs)
end

#remove_search_index(name: nil, ID: nil) ➤ Object

Remove o índice de pesquisa especificado pelo nome ou ID fornecido. O nome OU ID deve ser fornecido, mas não ambos.

Parâmetros:

  • name (string | nil) (padrão para: nil)

    o nome do índice a ser removido

  • id (string | nil) (padrão para: nil)

    o ID do índice a ser removido



107
108
109
110
111
112
113
114
# Arquivo 'lib/mongoid/search_indexable.rb', linha 107

def remove_search_index(nome: nada, ID: nada)
  logger.informações(
    "MONGOID: Removendo o índice de pesquisa '#{nome || ID}' " \
    "on collection '#{collection.name}'."
  )

  coleção.search_indexes.drop_one(nome: nome, ID: ID)
fim

#remove_search_indexes ➤ Objeto

Observação:

Seria bom se isso pudesse remover SOMENTE os índices de pesquisa

Solicite a remoção de todos os índices de pesquisa registrados. Observe que os índices de pesquisa são removidos de forma assíncrona e podem levar alguns minutos para serem totalmente excluídos.

que foram declarados no modelo, mas como o modelo pode não nomear o índice, não podemos garantir que saberemos o nome ou ID dos índices correspondentes. No entanto, não é irracional presumir que a intenção é que o modelo declare, individualmente, todos os índices de pesquisa desejados, portanto, a remoção de todos os índices de pesquisa deve ser suficiente. Se um índice ou conjunto de índices específico precisar ser removido, considere usar search_indexes.each com remove_search_index.



128
129
130
131
132
# Arquivo 'lib/mongoid/search_indexable.rb', linha 128

def remove_search_indexes
  search_indexes.cada fazer |especificações|
    remove_search_index ID: especificações['ID']
  end
end

#search_index(name_or_defn, defn = nil) ➤ Objeto

Adiciona uma definição de índice para as chaves únicas ou compostas fornecidas.

Exemplos:

Crie um índice básico.

class Person
  include Mongoid::Document
  field :name, type: String
  search_index({ ... })
  search_index :name_of_index, { ... }
end

Parâmetros:

  • name_or_defn (Símbolo | string | Hash)

    O nome do índice a ser definido ou a definição do índice.

  • defn (Hash) (padrão para: nil)

    A definição do índice de pesquisa .



147
148
149
150
151
152
153
# Arquivo 'lib/mongoid/search_indexable.rb', linha 147

def search_index(name_or_defn, defn = nada)
  name = name_or_defn
  name, defn = nada, name se name.is_a?(Hash)

  especificações = { definição: defn }.toque { |s| s[:name] = name.to_s se name }
  search_index_specs.push(especificações)
end

#search_indexes(opções = {}) ➤ Objeto

Um método de conveniência para consultar os índices de pesquisa disponíveis na coleção do modelo atual.

Parâmetros:

  • opções (Hash) (padrão para: {})

    as opções a serem passadas para a query do índice de pesquisa de pesquisa.

Hash de opções (opções):

  • :id (string)

    A ID do índice específico para query (opcional)

  • :name (string)

    O nome do índice específico para query (opcional)

  • :aggregate (Hash)

    O hash de opções para passar para o comando agregado (opcional)



98
99
100
# Arquivo 'lib/mongoid/search_indexable.rb', linha 98

def search_indexes(opções = {})
  collection.search_indexes(opções)
end

#wait_for_search_indexes(nomes, intervalo: 5) {|SearchIndexable::Status| ... } ➤ Objeto

Aguarde até que os índices de pesquisa nomeados sejam criados.

Parâmetros:

  • nomes (Array<String>)

    a lista de nomes de índice para aguardar

  • interval (Inteiro) (padrão para: 5)

    o número de segundos para aguardar antes de pesquisar novamente (usado somente quando um retorno de chamada de chamada de resposta de progresso é fornecido).

Rendimento:



78
79
80
81
82
83
84
85
86
# Arquivo 'lib/mongoid/search_indexable.rb', linha 78

def wait_for_search_indexes(nomes, interval: 5)
  loop fazer
    Status = Status.Novo(get_indexes(nomes))
    rendimento Status se block_given?
    intervalo se Status.pronto?

    sono interval
  end
end