Sfenks rastgele bağlaçlarıdır başarısız

2 Cevap php

Ben sphinxapi.php kullanarak Zend yoluyla kullanmak bu sfenks arama motoru var. Bu harika çalışıyor. Gerçekten gerçekten harika.

Ancak bir sorun var: Bu rastgele başarısız.

  	// 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), '*');

Burada görüldüğü gibi, ben etiketleri bir dil ve keyfi bir miktar aramak, (yerine sorgular bir battleload yapma) sonunda tek bir sorgu dizesi içine imploded.

Yani, normalde bu bir cazibe gibi çalışır, ama içerim sfenks hem sonuçlar uyacak 2000 İngilizce girişleri ve, diyelim ki, tag "resim" (veya diğer bazı tamamen ingilizce kelime) ile 1000 giriş ama SIFIR vurur, bulduğu döndürür tamamen yanlıştır. Aslında, sayfa her şeyi ferahlatıcı 800 gerçek sonuçları gibi bir şey normale döner.

Benim sorum, neden bunu yapıyor ve nasıl bunu durdurmak yapabilirim nedir?

Herhangi bir fikir?

: Edit: Ekleme kısaltılmış çıktı günlük

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

2 Cevap

Bu sorun, solved tamamen bir kaç ay orijinal mesajdan sonra olmuştur. Sorun şemsiye şirket har bizim servis sağlayıcıları yanlışlıkla sfenks komutları yanlış kök değerleri atanmış olmasıdır. Yukarıdaki sorun aslında Sfenks 0.9.8 üzerinde çalışan ve belli ki adamcağız oldu. Hiç benzer sorunları yaşarsanız Benim tavsiyem, dizin ve sorgulamak için ikisini de kullanmak double-tripple-check sürümü olduğunu.

Bu ilk satırında bir eksi unuttum çünkü matematik hesaplama dışarı rulo değil o zamanlardan biri gibi hissediyor. Bu ve ilgili konuda yardım etmeye çalıştım herkese teşekkürler.

Eğer sfenks, istemci herhangi bir hata vererek ya da başarısızlığını açıklayan uyarı iletileri olup olmadığını görmek için kontrol ettiniz?

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

    // process results
}