没有索引时,Sphinx搜索会崩溃

时间:2013-03-23 18:19:18

标签: search sphinx

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

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

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

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

1 个答案:

答案 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,''之类的东西,但确实需要连接到真正的数据库服务器。