思考Sphinx没有索引某些模型

时间:2010-11-29 07:33:15

标签: ruby-on-rails sphinx thinking-sphinx

这很奇怪。我有3个型号(A,B,C)。当crontab运行它时,它们运行得很好。

最近,我遇到了为模型A索引新条目的问题。

当我手动调用rake ts:index RAILS_ENV=production时,索引运行正常。没有错误,问题。但是,只有模型B,C得到更新。模型A没有更新。我检查了所有日志,没有任何问题。

这是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数据库时,它没有更新。所有Sphinx数据库的权限都是一样的。

使索引运行良好的唯一方法是删除旧的sphinx db,并调用整个ts:rebuild。我没有尝试删除production.sphinx.conf

在此之前,我确实尝试过添加delta索引。好吧,delta索引无法以某种方式工作,但正常的索引很好。然后,模型A的索引打破了。我还没有意识到它已经破坏了。然后我关闭了delta索引而没有删除列。 (我仍然不知道索引对于模型A运行正常)。然后今天我发现模型A索引存在问题。所以我想也许我没有删除数据库中的delta列。所以我删除了列,重新启动了MySQL,Apache和模型A索引仍然没有得到更新。

我实际上并不认为它与delta索引有关。因为我添加了,然后删除了所有A,B,C模型的delta索引。如果它应该破坏,它应该打破所有而不是只有一个模型。

请帮忙。谢谢。

修改 模型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 :(得分:0)

事实证明,我的服务器磁盘空间不足。模型A索引比其他模型大得多。即使索引成功,它也无法写入磁盘(尽管没有错误输出)。但是当我不断尝试向模型A添加越来越多的内容并继续重建时,磁盘空间问题就出现了。

所以我增加了磁盘大小。现在没事了。