1

検索されたスフィンクスを起動したいのですが、まだインデックスが設定されていません。データソースからデータをプルし、インデクサーを呼び出してインデックスを生成する別のcronジョブがあります。

したがって、初めて検索を開始したときはcronジョブがまだ実行されていないため、インデックスはありません。そして、searchdは次のようなエラーで失敗します。

致命的:提供する有効なインデックスがありません

これを回避する方法はありますか?たとえば、インデックスがない場合でもearchdを開始し、その間に誰かがそれに対して検索した場合、それは単にdocidを返しません。後でcronジョブが実行されると、インデックスにデータが入力され、検索によってそれらのインデックスをクエリできます。

4

1 に答える 1

1

その間に誰かがそれに対して検索した場合、それは単にdocidを返しません。

それには、再度検索するための実際のインデックスが必要になります。

空のインデックスを作成するだけです。次に、インデクサーが実行されると、インデックスを(今回はデータを使用して)再作成し、-rotateスイッチを使用してsearchedに通知します。

@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これで、searchedを実行できるようになります。

または、次のようなものを使用できますsql_query = SELECT 1,''が、実際のデータベースサーバーに接続する必要があります。

于 2013-03-23T20:47:18.313 に答える