我想要一个sphinx searchd启动但是还没有填充索引。我有一个单独的cron作业,它从数据源中提取数据,然后调用索引器来生成索引。
所以searchd第一次启动时,cron作业还没有运行,因此没有索引。并且searchd因以下错误而失败:
致命:没有有效的服务索引
有没有办法解决这个问题?例如即使在没有索引的情况下启动earchd,如果有人在此期间搜索了它,它也只返回没有docids。稍后当cron作业运行时,将填充索引,然后搜索可以查询这些索引。
答案 0 :(得分:0)
如果有人在此期间对其进行了搜索,则只返回没有docids。
这需要一个实际的索引来搜索。
只需创建一个空索引。然后当索引器运行时,它会重新创建索引(这次使用数据)并通知searchd - 使用--rotate开关。
产生'空'索引的方法示例,由@ctx提供:( 2014年12月添加)
source force { type = xmlpipe2 xmlpipe_command = cat /tmp/test.xml } index force { source = force path = /path/to/sphinx/datadir/filename charset_type=utf-8 }
/tmp/test.xml
:<?xml version="1.0" encoding="utf-8"?> <sphinx:docset> <sphinx:schema> <sphinx:field name="subject"/> </sphinx:schema> </sphinx:docset>
indexer force
现在searchd应该可以运行了。
Alternativly可以使用sql_query = SELECT 1,''
之类的东西,但确实需要连接到真正的数据库服务器。