0

Sphinx でインデックスをデルタとマージしているときに、次のエラーが発生しました。

~: /usr/local/bin/indexer --merge myindex myindexDelta --rotate;
Sphinx 2.0.6-release (r3473)
Copyright (c) 2001-2012, Andrew Aksyonoff
Copyright (c) 2008-2012, Sphinx Technologies Inc ( http://sphinxsearch.com )

using config file '/usr/local/etc/sphinx.conf'...
merging index 'myindexDelta' into index 'myindex'...
read 414.6 of 414.6 MB, 100.0% done
FATAL: failed to merge index 'myindexDelta' into index 'myindex': failed to open /server/sphinx/data/myindex.sps: No such file or directory

sphinx.conf の私の構成は次のとおりです。

source myindex
{
     type = mysql
     sql_host = localhost
     sql_user = db
     sql_pass =
     sql_db     = db
     sql_query_pre = SET SESSION query_cache_type=OFF
     sql_query_pre  = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM mytable
     sql_query_pre  = SET NAMES utf8

     sql_query = \
                 SELECT  id,title FROM mytable \
                 WHERE id<=( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
     sql_ranged_throttle = 0
}

source myindexDelta : myindex
{
     sql_query_pre = SET SESSION query_cache_type=OFF
     sql_query_pre = SET NAMES utf8
     sql_query = \
             SELECT  id,title FROM mytable \
             WHERE id > ( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
}

index myindex
{
     source = myindex
     path = /server/sphinx/data/myindex
     min_word_len = 3
     min_infix_len = 0
}

index myindexDelta : myindex
{
     source = myindexDelta
     path = /server/sphinx/data/myindexDelta
     min_word_len = 3
     min_infix_len = 0
}

次のパーミッションでファイル リストをインデックス化します。

~: ls -lh /server/sphinx/data/
-rw-r--r-- 1 root root    0 Nov 11 21:40 myindexDelta.spa
-rw-r--r-- 1 root root 290K Nov 11 21:40 myindexDelta.spd
-rw-r--r-- 1 root root  328 Nov 11 21:40 myindexDelta.sph
-rw-r--r-- 1 root root 106K Nov 11 21:40 myindexDelta.spi
-rw-r--r-- 1 root root    0 Nov 11 21:40 myindexDelta.spk
-rw------- 1 root root    0 Nov 11 21:40 myindexDelta.spl
-rw-r--r-- 1 root root    0 Nov 11 21:40 myindexDelta.spm
-rw-r--r-- 1 root root 223K Nov 11 21:40 myindexDelta.spp
-rw-r--r-- 1 root root    1 Nov 11 21:40 myindexDelta.sps
-rw-r--r-- 1 root root    0 Jul  3 21:17 myindex.spa
-rw-r--r-- 1 root root 7.0G Jul  3 23:54 myindex.spd
-rw-r--r-- 1 root root  290 Jul  3 23:54 myindex.sph
-rw-r--r-- 1 root root 397M Jul  3 23:54 myindex.spi
-rw-r--r-- 1 root root    0 Jul  3 23:54 myindex.spk
-rw------- 1 root root    0 Nov 11 21:08 myindex.spl
-rw-r--r-- 1 root root    0 Jul  3 21:17 myindex.spm
-rw-r--r-- 1 root root 9.2G Jul  3 23:54 myindex.spp

コードがすべてを説明していると確信しています。説明を追加する必要はありません。

4

1 に答える 1

2

元の 'my​​index' は別のバージョンの sphinx によって作成されたと推測しています。(つまり、2.0.6 リリースが 7 月に利用可能になるとは思わない)

そして、そのバージョン更新のどこかで、.sps ファイルの要件が変更されました。新しいバージョンでは必要ですが、古いバージョンでは必要ありません。文字列属性がないため、ファイルのデルタにデータが含まれていません。

myindex を現在のバージョンのインデクサーで再構築することをお勧めします。したがって、それらのバージョンは同じです。

または、 myindexDelta.spsmyindex.spsにコピーしてみてください。データが含まれていない (1 ダミー バイト!) ため、何も破損することはありません。これを行う必要があるのは 1 回だけです。

于 2012-11-12T13:49:15.523 に答える