1

私はこのsphinx検索エンジンを持っており、sphinxapi.phpを使用してZendで使用しています。それは素晴らしい働きをします。本当に本当に素晴らしい。

ただし、1つの問題があります。それはランダムに失敗します。

    // Prepare Sphinx search
    $sphinxClient = new SphinxClient();
    $sphinxClient->SetServer($ip, $port);
    $sphinxClient->SetConnectTimeout( 10 );

    $sphinxClient->SetMatchMode( SPH_MATCH_ANY  );
    $sphinxClient->SetLimits( $resultsPerPage * ($nPage - 1), $resultsPerPage );
    $sphinxClient->SetArrayResult( true );

    $query = array();
    $query['lang'] = '@lang "lang' . $language . '"';

    if (isset($params)) {
        foreach ($params as $param) {
            $query['tags'] = '@tags "' . $param . '"';
        }
    }

    // Make the Sphinx search
    $sphinxClient->SetMatchMode(SPH_MATCH_EXTENDED);
    $sphinxResult = $sphinxClient->Query(implode(' ', $query), '*');

ここに見られるように、私は言語と任意の量のタグを検索し、最終的に単一のクエリ文字列に組み込まれます(サブクエリのバトルロードを作成する代わりに)。

したがって、通常、これは魅力のように機能しますが、時折、スフィンクスは英語で2000エントリ、たとえば「pictures」(またはその他の純粋な英語の単語)というタグが付いた1000エントリを検出したが、両方の結果に一致するヒットがゼロであると返します。純粋に誤りです。実際、ページを更新すると、すべてが通常の状態に戻り、800の実際の結果が得られます。

私の質問は、なぜそれがこれを行うのか、そしてどうすればそれを停止させるのかということです。

何か案は?

:編集:短縮された出力ログを追加

    [error] => 
    [warning] => 
...
    [total] => 0 
    [total_found] => 0 
    [time] => 0.000 
    [words] => Array ( 
        [langen] => Array ( 
            [docs] => 2700 
            [hits] => 2701 ) 
        [picture] => Array ( 
            [docs] => 829 
            [hits] => 1571 ) ) )
4

2 に答える 2

0

この問題は、元の投稿から数か月後に完全に解決されました。問題は、傘下の企業 har のサービス プロバイダーが誤って間違ったルート値を sphinx コマンドに割り当てたことです。上記の問題は実際には Sphinx 0.9.8 で実行されており、明らかにバグがありました。私のアドバイスは、同様の問題が発生した場合は、インデックス作成とクエリの両方に使用するバージョンを2 回、3 回確認することです。

最初の行のマイナスを忘れたために、数学の計算が展開されないことがよくあります。このスレッドおよび関連するスレッドで支援を試みてくれたすべての人に感謝します。

于 2011-04-18T12:50:01.407 に答える
0

Sphinx クライアントがエラーまたは警告メッセージを表示しているかどうかを確認しましたか?

if($sphinxResult === false) {
    print "Query failed: " . $sphinxClient->GetLastError();
} else {
    if($sphinxClient->GetLastWarning()) {
        print "WARNING: " . $sphinxClient->GetLastWarning();
    }

    // process results
}
于 2009-11-25T15:50:19.833 に答える