Ben adı "mod_date" bir tarih-alan türü, sıralamak gerekir.
Bu tarayıcı adres-bar bu gibi çalışır:
http://localhost:8983/solr/select/?&q=bmw&sort=mod_date+desc
Ama Solr için bir URL gönderen bir phpSolr istemci kullanıyorum ve gönderilen url şudur:
fq=+category%3A%22Bilar%22+%2B+car_action%3AS%C3%A4ljes&version=1.2&wt=json&json.nl=map&q=%2A%3A%2A&start=0&rows=5&sort=mod_date+desc
// This wont work and is echoed after this in php:
$queryString = http_build_query($params, null, $this->_queryStringDelimiter);
$queryString = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $queryString);
Bu alışkanlık iş, ben neden bilmiyorum!
Her şey gayet iyi çalışıyor, tamam alanları döndürülür. Ama sıralama çalışmıyor.
Herhangi bir fikir?
Teşekkürler
BTW: alan "mod_date" gibi bir şey içerir:
2010-03-04T19:37:22.5Z
EDIT:
Önce service.php denilen başka bir php dosyası olan bir SolrPhpClient bu göndermek için PHP kullanabilirsiniz:
require_once('../SolrPhpClient/Apache/Solr/Service.php');
$solr = new Apache_Solr_Service('localhost', 8983, '/solr/');
$results = $solr->search($querystring, $p, $limit, $solr_params);
$ Solr_params Solr-parametreleri (q, FQ, vb) içeren bir dizidir.
Şimdi, service.php in:
$params['version'] = self::SOLR_VERSION;
// common parameters in this interface
$params['wt'] = self::SOLR_WRITER;
$params['json.nl'] = $this->_namedListTreatment;
$params['q'] = $query;
$params['sort'] = 'mod_date desc'; // HERE IS THE SORT I HAVE PROBLEM WITH
$params['start'] = $offset;
$params['rows'] = $limit;
$queryString = http_build_query($params, null, $this->_queryStringDelimiter);
$queryString = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $queryString);
if ($method == self::METHOD_GET)
{
return $this->_sendRawGet($this->_searchUrl . $this->_queryDelimiter . $queryString);
}
else if ($method == self::METHOD_POST)
{
return $this->_sendRawPost($this->_searchUrl, $queryString, FALSE, 'application/x-www-form-urlencoded');
}
The $results
contain the results from Solr...
So this is the way I need to get to work (via php).
Ben PHPclient yoluyla, elle adres çubuğuna yapıştırın değil (çünkü bu Q üstüne) aşağıda bu kod thats vardır, ancak çalışır. Ama şu sadece hata ayıklama için, ben PHPclient aracılığıyla işe almak gerekir:
http://localhost:8983/solr/select/?&q=bmw&sort=mod_date+des // Not via phpclient, but works
UPDATE (2010-03-08):
I have tried Donovans codes (the urls) and they work fine.
Now, I have noticed that it is one of the parameters causing the 'SORT' not to work.
This parameter is the "wt" parameter. If we take the url from top of this Q, (fq=+category%3A%22Bilar%22+%2B+car_action%3AS%C3%A4ljes&version=1.2&wt=json&json.nl=map&q=%2A%3A%2A&start=0&rows=5&sort=mod_date+desc)
, and just simply remove the "wt" parameter, then the sort works.
BUT the results appear differently, thus making my php code not able to recognize the results I believe. Donovan would know this I think. I am guessing in order for the PHPClient to work, the results must be in a specific structure, which gets messed up as soon as I remove the wt parameter.
Donovan, lütfen bana yardım ...
Here is some background what I use your SolrPhpClient for: I have a classifieds website, which uses MySql. But for the searching I am using Solr to search some indexed fields. Then Solr returns an array of ID:numbers (for all matches of the search criteria). Then I use those ID:numbers to find everything in a MySql db and fetch all other information (example is not searchable information).
Yani basitleştirilmiş: - Arama> Solr kimliği bir dizi tüm eşleşmeleri döndürür: nrs -> No: Solr gelen sayılar MySQL db kimlik numaraları aynıdır, bu yüzden sadece basit bir maç agains kimliği ile her kayıt yapabilirsiniz Solr sonuçları diziden kimliği eşleşen.
Ben hayır, alaka veya diğer fantezi şeyler artırılması, Gemologists kullanmayın. Ben sadece sıralama son sınıflandırılmış koymak tarafından ve kullanıcılara seçeneği vermek için de sıralama ucuz fiyata. Hiçbir şey daha.
Sonra (benim dilinde "Bilar" bu durumda örneğin "araba") kullanıcılar tarafından seçilen kategori bağlı Solr farklı alanlarda sorguları yapmak için "fq" parametresini kullanabilirsiniz.
I am really stuck with this problem here... Teşekkürler for all help