Индексирование вычисляемого поля для условий поиска в Thinking Sphinx

0

У меня есть модель продуктов, настроенная на то, что я пытаюсь выполнить поиск с Thinking Sphinx. Модель имеет атрибут, называемый статусом, который может быть активным, неактивным или активным в указанные даты.

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

Я новичок в Rails, поэтому я ищу предложения относительно того, как я могу это реализовать. Я подумал о том, что в моей модели вычисляется логический метод, который вычисляет эту логику, но я не думаю, что это индексируется Sphinx.

Я использую MySQL в качестве сервера базы данных.

Есть ли у кого-нибудь яркие идеи?

  • 0
    Я просто думал, что одним из способов решения этой проблемы будет создание дополнительного поля с именем is_active и запуск задания cron каждую ночь, а также присвоение полю значения true, если статус активен или текущее время находится между указанными датами, и установите его ложно в противном случае. Я думаю, что мне также нужно переопределить команду сохранения в модели, чтобы сделать то же самое для отдельных продуктов, если их статус был изменен в обновлении.
Теги:
full-text-search
thinking-sphinx

2 ответа

4
Лучший ответ

Вы правы, рубиновые методы на вашей модели не доступны для сфинксов. Однако вы можете повторно создать метод как атрибут sphinx. Их можно легко сделать с помощью SQL-фрагментов, например:

class Person < ActiveRecord::base
  ...


  define_index do
    has "status = 'active' and now() > start_date and now() < end_date", :as => :active, :type => :boolean
  end

  ...
end

Использование строки для указания поля или атрибута, подобного этому, совпадает с заданием настраиваемого столбца при построении SQL-запроса.

  • 0
    Спасибо! Похоже, это сработает.
0

попробуйте метод #indexes (не пробовал себя, просто заметил в googling)

http://www.slideshare.net/sazwqa/using-thinking-sphinx-with-rails-presentation

слайд 11

http://rdoc.info/rdoc/freelancing-god/thinking-sphinx/blob/04320b610b3a665ca1885cc2e6f29354d029e49a/ThinkingSphinx/Index/Builder.html#indexes-instance_method


Также:

http://www.mail-archive.com/[email protected]/msg02046.html

  • 0
    Спасибо за ресурсы - это здорово!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню