Módulo: Mongoid::SearchIndexable
- Ampliado por:
- ActiveSupport::Concern
- Incluido en:
- Compuesto
- Definido en:
- lib/mongoid/search_indexable.rb
Overview
Encapsula el comportamiento relacionado con la gestión de índices de búsqueda. Esta funcionalidad solo es compatible cuando se está conectado a un clúster de Atlas.
Definido bajo Namespace
Modules: ClassMethods clase: Estado
Resumen del método de instancia colapsar
-
#auto_embed_search(índice: nil, path: nil, limit: 10, num_candidates: nil, filtro: nil, exact: false, model: nil, pipeline: []) ⇒ arreglo<Mongoid::Document>
Realiza una query de Atlas Vector Search para documentos con texto similar al campo de texto almacenado de este documento, utilizando incrustación automática.
-
#vector_search(index: nil, path: nil, limit: 10, num_candidates: nil, filter: nil, pipeline: []) ⇒ Array<Mongoid::Document>
Realiza una búsqueda vectorial para documents similares a este, usando la incrustación almacenada de este document como el vector de query.
Detalles del método de instancia
#auto_embed_search(índice: nil, path: nil, limit: 10, num_candidates: nil, filtro: nil, exact: false, model: nil, pipeline: []) ⇒ arreglo<Mongoid::Document>
Realiza una query de Atlas Vector Search para document con texto similar al campo de texto a almacenar de este document, utilizando auto-incrustación. El current document está excluido de los resultados.
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# Archivo 'lib/mongoid/search_indexable.rb', línea 123 def (index: nulo, ruta: nulo, limit: 10, num_candidates: nulo, filtro: nulo, exacta: false, model: nulo, pipeline: []) # rubocop:disable Metrics/ParameterLists _index, resolved_path = sí mismo.clase.enviar(:resolve_auto_embed_index, index, ruta) text = public_send(resolved_path) si text.nil? propagar ArgumentError, "#{resolved_path} es nulo en este document; no se puede realizar una búsqueda de inserción automática" end self_filter = { '_id' => { '$ne' => _id } } filtro_combinado = filtro ? { '$and' => [ self_filter, filtro ] } : self_filter sí mismo.clase.( text, index: index, ruta: ruta, limit: limit, num_candidates: num_candidates, filtro: filtro_combinado, exacta: exacto, model: Modelo, pipeline: pipeline ) end |
#vector_search(índice: nil, ruta: nil, límite: 10, num_candidates: nil, filtro: nil, pipeline: []) ⇒ Array<Mongoid::Document>
Realiza una búsqueda vectorial para documents similares a este, utilizando la incrustación almacenada de este document como el vector de query. El document en sí queda excluido de los resultados.
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# Archivo 'lib/mongoid/search_indexable.rb', línea 79 def búsqueda vectorial(index: nulo, ruta: nulo, limit: 10, num_candidates: nulo, filtro: nulo, pipeline: []) _index, resolved_path = sí mismo.clase.enviar(resolver_indice_vectorial, index, ruta) vector de consulta = public_send(resolved_path) si vector de consulta.nil? propagar ArgumentError, "#{resolved_path} es nulo en este document; no se puede realizar la búsqueda vectorial" end self_filter = { '_id' => { '$ne' => _id } } filtro_combinado = filtro ? { '$and' => [ self_filter, filtro ] } : self_filter sí mismo.clase.búsqueda vectorial( vector de consulta, index: index, ruta: ruta, limit: limit, num_candidates: num_candidates, filtro: filtro_combinado, pipeline: pipeline ) end |