Módulo: Mongoid::SearchIndexable::ClassMethods

Definido en:
lib/mongoid/search_indexable.rb

Overview

Implementaciones para los métodos a nivel de clase de la funcionalidad.

Resumen del método de instancia colapsar

Detalles del método de instancia

#create_search_indexesArreglo<String>

Solicitar la creación de todos los índices de búsqueda registrados. Tenga en cuenta que estos índices se crean de forma asíncrona y pueden tardar varios minutos en estar completamente disponibles.

Devuelve:

  • (arreglo<String>)

    Los nombres de los índices de búsqueda.



65
66
67
68
69
# Archivo 'lib/mongoid/search_indexable.rb', línea 65

def create_search_indexes
  return si search_index_specs.¿vacío?

  Colección.search_indexes.create_many(search_index_specs)
end

#remove_search_index(nombre: nil, id: nil) ⇒ Object

Remueve el índice de búsqueda especificado por el nombre o ID dado. Se debe proporcionar un nombre O un ID, pero no ambos.

Parámetros:

  • Nombre (String | nil) (predeterminado: nulo)

    el nombre del índice a eliminar

  • ID (String | nil) (predeterminado: nulo)

    el ID del índice que desea remover



107
108
109
110
111
112
113
114
# Archivo 'lib/mongoid/search_indexable.rb', línea 107

def eliminar_índice_de_búsqueda(nombre: nulo, identificación: nulo)
  logger.información(
    "MONGOID: Eliminando el índice de búsqueda'#{name || id} ' " \
    "en la colección' #{collection.name} '."
  )

  collection.search_indexes.drop_one(name: name, id: id)
end

#remove_search_indexesObject

Nota:

Sería bueno si esto pudiera eliminar SÓLO los índices de búsqueda

Solicitar la eliminación de todos los índices de búsqueda registrados. Tenga en cuenta que estos índices se eliminan de forma asíncrona y pueden tardar varios minutos en eliminarse por completo.

que se han declarado en el modelo, pero como es posible que el modelo no nombre el índice, no podemos garantizar que sepamos el nombre o el ID de los índices correspondientes. Sin embargo, no es descabellado suponer que la intención es que el modelo declare, uno a uno, todos los índices de búsqueda deseados, por lo que remover todos los índices de búsqueda debería ser suficiente. Si, en cambio, es necesario eliminar un índice o conjunto de índices específicos, considera usar search_indexes.each con remove_search_index.



128
129
130
131
132
# Archivo 'lib/mongoid/search_indexable.rb', línea 128

def remove_search_indexes
  search_indexes.cada hacer |especulación|
    eliminar_índice_de_búsqueda identificación: especulación['id']
  end
end

#índice_de_búsqueda(nombre_o_defn, defn = nil) ⇒ Objeto

Agrega una definición de índice para las claves individuales o compuestas proporcionadas.

Ejemplos:

Crear un í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)

    Puede ser el nombre del índice que se va a definir, o la definición del índice.

  • defn (Hash) (predeterminado: nulo)

    La definición del índice de búsqueda.



147
148
149
150
151
152
153
# Archivo 'lib/mongoid/search_indexable.rb', línea 147

def search_index(name_or_defn, defn = nulo)
  Nombre = name_or_defn
  Nombre, defn = nulo, Nombre si Nombre.is_a?(Picadillo)

  especulación = { definición: defn }.tocar { |s| s[nombre] = Nombre.to_s si Nombre }
  search_index_specs.push(especulación)
end

#search_indexes(options = {}) ⇒ objeto

Un método conveniente para consultar los índices de búsqueda disponibles en la colección del modelo actual.

Parámetros:

  • opciones (Hash) (por defecto: {})

    las opciones para pasar a la consulta del índice de búsqueda.

Opciones Hash (options):

  • :id (Cadena)

    El ID del índice específico a query (opcional)

  • nombre (Cadena)

    El nombre del índice específico a consultar (opcional)

  • :aggregate (Hash)

    El hash de opciones para pasar a la orden de agregación (opcional)



98
99
100
# Archivo 'lib/mongoid/search_indexable.rb', línea 98

def search_indexes(opciones = {})
  Colección.search_indexes(opciones)
end

#wait_for_search_indexes(names, interval: 5) {|SearchIndexable::Status| ... } ⇒ Object

Espera a que se creen los índices de búsqueda nombrados.

Parámetros:

  • nombres (arreglo<String>)

    la lista de nombres de índices que hay que esperar

  • interval (Entero) (por defecto: 5)

    el número de segundos que se debe esperar antes de volver a realizar la consulta (solo se utiliza cuando se proporciona una función de retorno de progreso).

Rendimientos:



78
79
80
81
82
83
84
85
86
# Archivo 'lib/mongoid/search_indexable.rb', línea 78

def wait_for_search_indexes(nombres, interval: 5)
  bucle hacer
    Estado = Estado.Nuevo(get_indexes(nombres))
    rendimiento Estado si ¿block_given?
    break si Estado.¿Listo?

    sueño interval
  end
end