2012-02-26 3 views
1

Я работаю над проектом rails, который был создан с использованием noSql (Mongoid). Каждая вещь работает отлично. Проблема заключается в том, что я хочу добавить .. полнотекстовый поиск здесь. Я использовал эти драгоценные камни для этого ...Mongoid and Full_text search issue

gem 'mongoid_fulltext' 

и мой файл модели выглядит следующим образом ..

class Keyword 
    include Mongoid::Document 
    include Mongoid::FullTextSearch 
    field :name, type:String 
    #index :name, unique: true 
    embeds_many :posts 

    validates_presence_of :name 
    validates_uniqueness_of :name 

    fulltext_search_in :name, :index_name => 'name_index' 
end 

и в контроллере.

@keywords = Keyword.fulltext_search(params[:search], :index => 'name_index') 

, а затем @keywords всегда возвращает пустой массив.

Благодаря Awieet

ответ

0

Помимо того, что я предполагаю, что есть ошибки форматирования, единственная ошибка, я могу найти то, что вы, кажется, называя индекс вручную.

Возможно, в вашем запросе на fulltext_search вы должны использовать :index_name => 'name_index' вместо :index => 'name_index'.

Я бы посоветовал просто не возиться с именем индекса по умолчанию, хотя и полностью удалить этот аргумент из вызова метода.

Кроме того, были ли записи сохранены до того, как вы добавили драгоценный камень mongoid_fulltext? Если это так, вам нужно вызвать метод update_ngram_index объекта Class (или каждого экземпляра), чтобы добавить их в индекс.

Кроме этого, вы проверили драгоценный камень mongoid_search в качестве альтернативы mongoid_fulltext?

https://github.com/mauriciozaffari/mongoid_search

Я пытался как и найти считаю, что это один имеет гораздо более чистую реализацию и интерфейс. Опять же, я использую полнотекстовый поиск экономно. Возможно, вы используете полнотекстовый поиск больше, чем я, и я не уверен, какие отличия являются особенными, но стоит посмотреть.

Надеюсь, что это поможет.

+0

Да, мне это не хватало .. update_ngram_index – user1232518