Mysql
 sql >> Database >  >> RDS >> Mysql

Perché questo tipo non funziona in Solr?

Come sottolineato nei commenti sull'overflow dello stack, la query del browser è diversa dalla query basata sul client php:per rimuoverla dall'equazione è necessario verificare con questa corretta. Per ottenere gli stessi risultati della query basata sul browser, il tuo codice php dovrebbe essere simile a questo:

$solr = new Apache_Solr_Client(...);

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

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

Invece, immagino che assomigli di più a:

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

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

Quello che mi aspetto che tu veda è che i risultati del client php saranno gli stessi dei risultati basati sul browser, e immagino che lo stesso accadrebbe se lo facessi nel modo opposto:prendi i tuoi parametri correnti dal client php e li applica correttamente al query basata su browser.

Ora sul tuo problema, non vedi i documenti ordinati correttamente.

Vorrei provare questa query, che è l'equivalente del codice basato sul 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

rispetto a questa query, che sposta la query del filtro nella query principale:

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

e vedere se c'è una differenza. In tal caso, potrebbe trattarsi di un bug nel modo in cui i risultati delle query filtrate nella cache vengono utilizzati e ordinati per solr, il che non sarebbe un problema con il client, ma con il servizio solr stesso.

Spero che questo ti avvicini a una risposta.