We seldom need to fetch result from solr based on limit and order by clause similar to sql queries , the same thing can be achieved using the below given code packet with solarium :
// create a client instance
$client = new Solarium\Client($config);
// get a select query instance
$query = $client->createSelect();
// set a query (all prices starting from 12)
$limit=10;
$start=0;
$search_for="*";
if(isset($_GET["search_for"])){
$search_for=$_GET["search_for"];
}
$query->setQuery('book:'.$search_for);
if(isset($_GET["start"])){
$start=$_GET["start"];
}
// set start and rows param (comparable to SQL limit) using fluent interface
$query->setStart($start)->setRows($limit);
// set fields to fetch (this overrides the default setting 'all fields')
$query->setFields(array('id','name','description_book','isbn','isbn13','eisbn10','eisbn13','authors','publishers','image_book','listprice_book','rentalprice_book','semesterrentalprice_book','producturl_book','inventoryflag'));
// sort the results by price ascending
$query->addSort('inventoryflag', $query::SORT_DESC);
// this executes the query and returns the result
try{
$resultset = $client->select($query);
// display the total number of documents found by solr
echo 'NumFound: '.$resultset->getNumFound();
// show documents using the resultset iterator
foreach ($resultset as $document) {
//print_r($document);
echo '
';
// the documents are also iterable, to get all fields
foreach ($document as $field => $value) {
// this converts multivalue fields to a comma-separated string
if (is_array($value)) {
$value = implode(', ', $value);
}
echo '';
}
echo '
' . $field . ' | ' . $value . ' |
---|
';
}
}
//catch exception
catch(Exception $e){
echo 'Message: ' .$e->getMessage();
}
0 Comment(s)