J'ai ce moteur de recherche sphinx que j'utilise via Zend en utilisant sphinxapi.php. Cela fonctionne fantastique. Vraiment vraiment génial.Sphinx échoue aléatoirement à combiner des sous-requêtes
Cependant, il y a un problème: il échoue de façon aléatoire.
// 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), '*');
Comme on le voit ici, je recherche une langue et une quantité arbitraire de balises, implosé en une seule chaîne de requête à la fin (au lieu de faire un battleload de sous-requêtes). Donc, normalement, cela fonctionne comme un charme, mais occasionnellement sphinx renvoie qu'il a trouvé 2000 entrées en anglais et, disons, 1000 entrées avec le tag "images" (ou un autre mot purement anglais) mais ZÉRO hits qui correspondent les deux résultats, ce qui est purement faux. En fait, rafraîchir la page revient à la normale avec quelque chose comme 800 résultats réels.
Ma question est pourquoi fait-elle cela et comment puis-je l'arrêter?
Des idées?
: Edit: Ajout journal de sortie raccourcie
[error] =>
[warning] =>
...
[total] => 0
[total_found] => 0
[time] => 0.000
[words] => Array (
[langen] => Array (
[docs] => 2700
[hits] => 2701)
[picture] => Array (
[docs] => 829
[hits] => 1571)))
Vous venez d'ajouter les chutes d'erreur d'une requête échouée typique. Comme vous le voyez, il ne me donne pas une erreur et est en fait très réussi à trouver tous les hits en anglais ET les images, mais pour une raison quelconque, ne pas les combiner. – John
quelle version utilisez-vous? Si c'est la dernière version (0.9.9-rc2), vous pouvez essayer d'utiliser le mode de correspondance SPH_MATCH_EXTENDED2 pour voir si c'est plus fiable ... même si je doute que ce soit vraiment le problème. –
Bonjour, essayé le prolongé 2, mais en vain. Ça arrive toujours au hasard, donc je ne sais pas quoi faire. – John