这很奇怪。我有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
答案 0 :(得分:0)
事实证明,我的服务器磁盘空间不足。模型A索引比其他模型大得多。即使索引成功,它也无法写入磁盘(尽管没有错误输出)。但是当我不断尝试向模型A添加越来越多的内容并继续重建时,磁盘空间问题就出现了。
所以我增加了磁盘大小。现在没事了。