2013-03-23 43 views
0

我想要一個獅身人面像searchd啓動,但目前還沒有索引填充。我有一個單獨的cron作業,從數據源中提取數據,然後調用索引器來生成索引。沒有索引時獅身人面像搜索崩潰

因此,第一次searchd啓動時,cron作業尚未運行,因此沒有索引。和searchd的失敗,像錯誤:

FATAL:沒有有效的索引服務

有什麼辦法來解決這個問題?例如即使在沒有索引的情況下也開始搜索,如果有人在那段時間內對它進行搜索,它只會返回沒有docid。稍後當cron作業運行時,索引將被填充,然後搜索可以查詢這些索引。

回答

0

如果有人在那段時間內反對它,它只是沒有返回docids。

這將需要一個實際的索引來搜索重新分配。

只需創建一個空索引。然後當索引器運行時,它會重新創建索引(這次是數據)並通知searchd - using --rotate開關。的方式,以產生一個 '空' 指數,

例如通過@ctx提供了:(新增十二月,2014)

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應該可以運行。

另外可以使用類似sql_query = SELECT 1,''的東西,但這確實需要連接到真實的數據庫服務器。

+0

謝謝...你將如何創建一個空索引? – user2202809 2013-03-23 20:48:38

+0

與創建普通索引的方式相同,僅使用沒有數據的數據源。 – barryhunter 2013-03-23 20:53:20

+0

添加了一個實際的配置;這個答案沒有用。 – chx 2013-12-28 04:32:53