For a description of Solr debugging see https://solr.apache.org/guide/common-query-parameters.html#debug-parameter.

Options

Name Type Default value Description
explainother string null Using this parameter you can specify a Lucene query to identify a set of documents. If non-blank, the explain info of each document that matches this query, relative to the main query (specified by the q parameter) will be returned along with the rest of the debugging information.

Example

<?php

require_once __DIR__.'/init.php';

htmlHeader();

// create a client instance
$client = new Solarium\Client($adapter, $eventDispatcher, $config);

// get a select query instance
$query = $client->createSelect();
$query->setQuery('ipod');

// add debug settings
$debug = $query->getDebug();
$debug->setExplainOther('id:MA*');

// this executes the query and returns the result
$resultset = $client->select($query);
$debugResult = $resultset->getDebug();

// display the debug results
echo '<h1>Debug data</h1>';
echo 'Querystring: '.$debugResult->getQueryString().'<br/>';
echo 'Parsed query: '.$debugResult->getParsedQuery().'<br/>';
echo 'Query parser: '.$debugResult->getQueryParser().'<br/>';
echo 'Other query: '.$debugResult->getOtherQuery().'<br/>';

echo '<h2>Explain data</h2>';
foreach ($debugResult->getExplain() as $key => $explanation) {
    echo '<h3>Document key: '.$key.'</h3>';
    echo 'Value: '.$explanation->getValue().'<br/>';
    echo 'Match: '.($explanation->getMatch() ? 'true' : 'false').'<br/>';
    echo 'Description: '.$explanation->getDescription().'<br/>';
    echo '<h4>Details</h4>';
    foreach ($explanation as $detail) {
        echo 'Value: '.$detail->getValue().'<br/>';
        echo 'Match: '.($detail->getMatch() ? 'true' : 'false').'<br/>';
        echo 'Description: '.$detail->getDescription().'<br/>';
        echo '<hr/>';
    }
}

echo '<h2>ExplainOther data</h2>';
foreach ($debugResult->getExplainOther() as $key => $explanation) {
    echo '<h3>Document key: '.$key.'</h3>';
    echo 'Value: '.$explanation->getValue().'<br/>';
    echo 'Match: '.($explanation->getMatch() ? 'true' : 'false').'<br/>';
    echo 'Description: '.$explanation->getDescription().'<br/>';
    echo '<h4>Details</h4>';
    foreach ($explanation as $detail) {
        echo 'Value: '.$detail->getValue().'<br/>';
        echo 'Match: '.($detail->getMatch() ? 'true' : 'false').'<br/>';
        echo 'Description: '.$detail->getDescription().'<br/>';
        echo '<hr/>';
    }
}

echo '<h2>Timings (in ms)</h2>';
echo 'Total time: '.$debugResult->getTiming()->getTime().'<br/>';
echo '<h3>Phases</h3>';
foreach ($debugResult->getTiming()->getPhases() as $phaseName => $phaseData) {
    echo '<h4>'.$phaseName.'</h4>';
    foreach ($phaseData as $class => $time) {
        echo $class.': '.$time.'<br/>';
    }
    echo '<hr/>';
}

htmlFooter();