Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi ce tri ne fonctionne-t-il pas dans Solr ?

Comme indiqué dans les commentaires de débordement de pile, la requête de votre navigateur est différente de la requête basée sur le client php - pour supprimer cela de l'équation, vous devez tester avec cette correction. Pour obtenir les mêmes résultats que la requête basée sur le navigateur, votre code php devrait ressembler à ceci :

$solr = new Apache_Solr_Client(...);

$searchOptions = array(
  'sort' => 'mod_date desc'
);

$results = $solr->search("bmw", 0, 10, $searchOptions);

Au lieu de cela, j'imagine que cela ressemble plus à :

$searchOptions = array(
    'fq' => 'category:"Bilar" + car_action:Sälje',
    'sort' => 'mod_date desc'
)

$solr->search("\*:*", 0, 10, $searchOptions);

Ce que je m'attends à ce que vous voyiez, c'est que les résultats du client php seront les mêmes que les résultats basés sur le navigateur, et j'imagine que la même chose se produirait si vous le faisiez dans le sens inverse - prenez vos paramètres actuels du client php et appliquez-les correctement au requête basée sur le navigateur.

Passons maintenant à votre problème, vous ne voyez pas les documents triés correctement.

J'essaierais cette requête, qui est l'équivalent du code basé sur le client php :

http://localhost:8983/solr/select/?&q=%2A%3A%2A&fq=+category%3A%22Bilar%22+%2B+car_action%3AS%C3%A4ljes&sort=mod_date+desc

versus cette requête, qui déplace la requête filtre dans la requête principale :

http://localhost:8983/solr/select/?&q=+category%3A%22Bilar%22+%2B+car_action%3AS%C3%A4ljes&sort=mod_date+desc

et voir s'il y a une différence. Si tel est le cas, il peut s'agir d'un bogue dans la manière dont les résultats des requêtes filtrées mises en cache sont utilisés et triés par solr - ce qui ne poserait pas de problème avec le client, mais avec le service solr lui-même.

J'espère que cela vous rapprochera d'une réponse.