* @author Timo Hund */ class RelevanceViewHelper extends AbstractSolrFrontendViewHelper { use CompileWithRenderStatic; /** * Initializes the arguments */ public function initializeArguments() { parent::initializeArguments(); $this->registerArgument('resultSet', SearchResultSet::class, 'The context searchResultSet', true); $this->registerArgument('document', SearchResult::class, 'The document to highlight', true); $this->registerArgument('maximumScore', 'float', 'The maximum score that should be used for percentage calculation, if nothing is passed the maximum from the resultSet is used', false); } /** * @param array $arguments * @param \Closure $renderChildrenClosure * @param RenderingContextInterface $renderingContext * @return string */ public static function renderStatic(array $arguments, \Closure $renderChildrenClosure, RenderingContextInterface $renderingContext) { /** @var $document SearchResult */ $document = $arguments['document']; /** @var $resultSet SearchResultSet */ $resultSet = $arguments['resultSet']; $maximumScore = $arguments['maximumScore'] ?? $resultSet->getMaximumScore(); $content = 0; if ($maximumScore <= 0) { return $content; } $documentScore = $document->getScore(); $score = floatval($documentScore); $multiplier = 100 / $maximumScore; $scorePercentage = round($score * $multiplier); $content = $scorePercentage; return $content; } }