1

我想要一个 sphinx searchd 启动,但还没有填充索引。我有一个单独的 cron 作业,它从数据源中提取数据,然后调用索引器来生成索引。

所以第一次 searchd 启动 cron 作业还没有运行,因此没有索引。并且 searchd 失败并出现以下错误:

致命:没有有效的索引可供服务

有没有办法解决这个问题?例如,即使在没有索引的情况下也启动 archd,如果在此期间有人搜索它,它只会返回没有 docid。稍后当 cron 作业运行时,索引将被填充,然后搜索可以查询这些索引。

4

1 回答 1

1

如果在那段时间有人搜索它,它不会返回任何文档。

这将需要一个实际的索引来再次搜索。

只需创建一个空索引。然后当索引器运行时,它会重新创建索引(这次是数据)并通知 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,''但这确实需要连接到真实的数据库服务器。

于 2013-03-23T20:47:18.313 回答