sql >> Databáze >  >> RDS >> Mysql

Proč tento druh v Solru nefunguje?

Jak bylo zdůrazněno v komentářích k přetečení zásobníku, váš dotaz prohlížeče se liší od dotazu založeného na php klientu – abyste to odstranili z rovnice, měli byste to otestovat s tímto opraveným. Chcete-li získat stejné výsledky jako dotaz založený na prohlížeči, váš php kód by měl vypadat nějak takto:

$solr = new Apache_Solr_Client(...);

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

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

Místo toho si představuji, že to vypadá spíš jako:

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

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

Očekávám, že uvidíte, že výsledky php klienta budou stejné jako výsledky založené na prohlížeči, a myslím si, že totéž by se stalo, kdybyste to udělali opačně - převezměte své aktuální parametry z php klienta a aplikujte je správně na dotaz založený na prohlížeči.

Nyní k vašemu problému, nevidíte dokumenty správně seřazeny.

Zkusil bych tento dotaz, který je ekvivalentem kódu založeného na php klientovi:

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

oproti tomuto dotazu, který přesune dotaz filtru do hlavního dotazu:

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

a uvidíme, jestli je rozdíl. Pokud existuje, pak může jít o chybu v tom, jak jsou výsledky z filtrovaných dotazů uložených v mezipaměti používány a tříděny podle solr – což by nebyl problém s klientem, ale se samotnou službou solr.

Doufám, že se tím dostanete blíže k anseru.



  1. Jak modelovat pro snadnou údržbu databáze

  2. Způsobí zrušení tabulky v MySQL také indexy?

  3. Jak mohu zjistit, kolik připojení MySQL je otevřeno?

  4. SQL SERVER – jeden trik pro manipulaci s dynamickým SQL, abyste se vyhnuli útoku SQL Injection?