我想要一个 sphinx searchd 启动,但还没有填充索引。我有一个单独的 cron 作业,它从数据源中提取数据,然后调用索引器来生成索引。
所以第一次 searchd 启动 cron 作业还没有运行,因此没有索引。并且 searchd 失败并出现以下错误:
致命:没有有效的索引可供服务
有没有办法解决这个问题?例如,即使在没有索引的情况下也启动 archd,如果在此期间有人搜索它,它只会返回没有 docid。稍后当 cron 作业运行时,索引将被填充,然后搜索可以查询这些索引。
如果在那段时间有人搜索它,它不会返回任何文档。
这将需要一个实际的索引来再次搜索。
只需创建一个空索引。然后当索引器运行时,它会重新创建索引(这次是数据)并通知 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,''
但这确实需要连接到真实的数据库服务器。