Думающий Сфинкс не индексирует определенные модели - PullRequest
3 голосов
/ 29 ноября 2010

Это довольно странно.У меня есть 3 модели (A, B, C).Работали отлично, когда crontab запускает его.

Недавно у меня возникла проблема с индексированием новых записей для модели A.

Когда я вызываю rake ts:index RAILS_ENV=production вручную, индексация выполняется нормально.Нет ошибок, проблема.Но обновляются только модели B, C.Модель А не обновляется.Я проверил все журналы, не было никаких проблем.

Вот searchd.log:

[Mon Nov 29 15:02:27.920 2010] [ 7280] rotating indices (seamless=1)
[Mon Nov 29 15:02:28.211 2010] [ 7280] rotating index 'b_core': success
[Mon Nov 29 15:02:28.215 2010] [ 7280] rotating index 'c_core': success
[Mon Nov 29 15:02:28.216 2010] [ 7280] rotating finished

Здесь вы заметите, a_core не появляется.Все это пока все работало нормально.Когда я увидел, что он работает, он индексировал A, но когда я проверял свой sphinx db, когда он последний раз обновлялся, он не обновлялся.Разрешения для всех Sphinx db одинаковы.

Единственный способ обеспечить правильную индексацию - это удалить старый sphinx db и вызвать весь ts:rebuild.Хотя я не пытался удалить production.sphinx.conf.

Я пытался добавить дельта-индексацию в прошлом до того, как это произошло.Ну, дельта-индексация не могла работать как-то, но нормальная индексация была в порядке.Затем индексация сломалась для модели А. Я так и не понял, что она сломалась.Затем я отключил дельта-индексацию, не удаляя столбец.(Я все еще не знал, что индексирование работало нормально для модели A).Затем сегодня я узнал, что существует проблема с индексацией модели А.Поэтому я подумал, что, возможно, я не удалил дельта-столбец в моей базе данных.Поэтому я удалил столбец, перезапустил MySQL, Apache и модель. Индекс по-прежнему не обновляется.

На самом деле я не думаю, что это как-то связано с дельта-индексированием.Поскольку я добавил, то удалил дельта-индексацию для всех моделей A, B, C.Если он сломается, он должен сломать все вместо одной модели.

Пожалуйста, помогите.Спасибо.

РЕДАКТИРОВАТЬ Модель A

  # ThinkingSphinx Index
  define_index do
    indexes :name, :sortable => true
    indexes address
    indexes city
    indexes state
    indexes country
    indexes spot_type
    indexes season
    indexes description
    has rating_average

  #  set_property :delta => true
  end

Модель B

  # ThinkingSphinx Index
  define_index do
    indexes name
    indexes duration
    has budget, created_at, rating_average

  #  set_property :delta => true
  end

1 Ответ

0 голосов
/ 29 ноября 2010

Оказалось, на моем сервере не хватило места на диске.Индекс модели А намного больше, чем у других моделей.Несмотря на то, что индексирование было успешным, оно не могло записать на диск (хотя не было вывода ошибок).Но поскольку я продолжал пытаться добавить все больше и больше содержимого в модель А и продолжал перестраивать, проблема с дисковым пространством показала.

Так что я увеличил размер диска.Теперь все хорошо.

...