2013-04-08 18 views
3

我在MongoDB中有文本索引,並且想要使用text命令來搜索我的集合。在Mongoid中找不到這個功能。如何使用Mongoid執行runCommand?

+1

您是否在尋找[this](https://groups.google.com/d/msg/mongoid/hJRbaNMy6w4/PEolIR2SJ2oJ)? – MervS 2013-04-23 02:58:25

回答

2

我試圖找到解決方案,因爲我也是一個mongoid用戶。除了查詢之外,我還沒有發現任何與mongoid中的搜索文本相關的具體內容。經過一番調查後,我發現mongoid_search寶石可用於搜索文本。

它有一個限制,寫在自述的第一行是「如果您的可搜索模型很大(即1.000.000+記錄),solr或sphinx可能更適合您。」如果您需要配置solr或elasticsearch以獲得更好的性能。如果你打算在heroku上部署,那麼請考慮這一點。

可能這會幫助你實現你的目標。

1

最近碰到類似的情況。您可以通過以下方式運行Mongoid搜索命令:

session = Mongoid.session('default') 
session.command({"text" => 'my_collection', 'search' => 'whatever'}) 

使一個不錯的mixin:

# mixins/search.rb 
module Mixins 
    module Search 

    extend ActiveSupport::Concern 

    module ClassMethods 

     def search(query) 
     session = Mongoid.session('default') 
     session.command({"text" => collection.name, 'search' => query}) 
     end 

    end 

    end 
end 

你可以include Mixins::Search到您的模型,並使用Model.search 'whatever'這樣尋找的東西。

+0

這看起來像是正確的答案。我會調整Mixin以使用Mongoid的mongo_session文檔類方法。 – Udi 2013-12-09 21:04:15