Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warum funktioniert diese Art in Solr nicht?

Wie in den Stapelüberlaufkommentaren erwähnt, unterscheidet sich Ihre Browserabfrage von Ihrer auf dem PHP-Client basierenden Abfrage. Um dies aus der Gleichung zu entfernen, sollten Sie dies mit dieser Korrektur testen. Um dieselben Ergebnisse wie die Browser-basierte Abfrage zu erhalten, sollte Ihr PHP-Code etwa so aussehen:

$solr = new Apache_Solr_Client(...);

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

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

Stattdessen stelle ich mir vor, dass es eher so aussieht:

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

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

Ich erwarte, dass Sie sehen, dass die Ergebnisse des PHP-Clients mit den browserbasierten Ergebnissen identisch sind, und ich stelle mir vor, dass dasselbe passieren würde, wenn Sie es umgekehrt machen würden - nehmen Sie Ihre aktuellen Parameter vom PHP-Client und wenden Sie sie korrekt auf den an browserbasierte Abfrage.

Nun zu Ihrem Problem, Sie sehen die Dokumente nicht richtig sortiert.

Ich würde diese Abfrage versuchen, die dem PHP-Client-basierten Code entspricht:

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

gegenüber dieser Abfrage, die die Filterabfrage in die Hauptabfrage verschiebt:

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

und sehen, ob es einen Unterschied gibt. Wenn dies der Fall ist, liegt möglicherweise ein Fehler darin vor, wie Ergebnisse aus zwischengespeicherten gefilterten Abfragen verwendet und nach Solr sortiert werden - was kein Problem des Clients, sondern des Solr-Dienstes selbst wäre.

Ich hoffe, das bringt Sie einer Antwort näher.