mongoid создать текстовый индекс по всем текстовым полям модели

Могу ли я создать текстовый индекс для всех полей в модели ruby, как с помощью этой команды mongodb:db.documents.createIndex({ "$**": "text" }, { name: "TextIndex" })

Также можем ли мы как-то добавить числовые свойства в индекс. Я пытался так, но это не так

def fulltext_index
    attributes.except(:_rev, :_type, :doc_type).values.map{|e| e.class==String ? e.to_s : ""}.join(" ").strip + " " + sequence.to_s
end

index({ fulltext_index: "text"})

1 ответ

Решение

Вы можете создать нужный вам индекс в качестве второй строки в следующем примере:

client = Mongo::Client.new([ '127.0.0.1:27017' ], :database => 'music') 
client[:bands].indexes.create_one( { "$**": "text" } )

Посмотрите эту ссылку для получения дополнительной информации: https://github.com/mongodb/mongo-ruby-driver/blob/master/docs/tutorials/ruby-driver-indexing.txt

В моем случае мне нужно открыть консоль rails и запустить это:

для модели с именем Model

client = Mongoid.default_client[Model.collection_name]
client.indexes.create_one( { "$**" => "text" } )

Для других пользовательских идентификаторов взгляните на этот ответ

Другие вопросы по тегам