У меня есть модель пользователя MongoID
class User
include Mongoid::Document
field :name
embeds_many :watchlists
end
, в которую встроено один ко многим
class Watchlist
include Mongoid::Document
field :description
embedded_in :user
end
Я хочу найти полный текст в поле :description
, котороенаходится в списке наблюдения ребенка, встроенного в пользователя.Самый тяжелый поиск проходит по 1,5 тыс. Описаний, максимум 30-40 слов каждое.
Здесь мы ограничены тем, что я разверну на Heroku, и у них нет свободного плана для индексации в настоящее время.
Затем я попытался с mongoid_fulltext (а также mongoid_search и mongoid-searchable ), но безуспешно.
У кого-нибудь есть идеи, как это сделать?
ОБНОВЛЕНИЕ:
Это пример mongoid_fulltext .Модель User встраивает много списков наблюдения.Я ищу строку в: поле описания, которое находится в списке наблюдения дочернего документа:
class Watchlist
include Mongoid::Document
field :description
...
embedded_in :user
end
Список наблюдения встроен в пользователя:
class User
include Mongoid::Document
include Mongoid::FullTextSearch
field :name
...
embeds_many :watchlists
def search_in_description
self.watchlists.map{ |w| w.description }.join(' ')
end
fulltext_search_in :search_in_description
end
... но таким образом,запуск User.fulltext_search("a presentation framework based on the power of CSS3")
возвращает мне только родительский документ, вызывающий совпадение (пользовательский экземпляр), а не документацию по спискам наблюдения (дочерний экземпляр).
См. Вывод: http://pastie.org/3226179
Как я могу получить только соответствующие "списки наблюдения"?(Я пробовал несколько способов безуспешно)