* All rights reserved * * This script is part of the TYPO3 project. The TYPO3 project is * free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * The GNU General Public License can be found at * http://www.gnu.org/copyleft/gpl.html. * * This script is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * This copyright notice MUST APPEAR in all copies of the script! ***************************************************************/ use WapplerSystems\Meilisearch\Domain\Search\ResultSet\Grouping\GroupItem; use WapplerSystems\Meilisearch\System\Meilisearch\Document\Document; /** * Meilisearch document class that should be used in the frontend in the search context. * * @author Timo Schmidt */ class SearchResult extends Document { /** * The variant field value * * Value of Meilisearch collapse field, which is defined via * TypoScript variable "variants.variantField" * * @var string */ protected $variantFieldValue = ''; /** * Number of variants found * * May differ from documents in variants as * returned variants are limited by expand.rows * * @var int */ protected $variantsNumFound = 0; /** * @var SearchResult[] */ protected $variants = []; /** * Indicates if an instance of this document is a variant (a sub document of another). * * @var bool */ protected $isVariant = false; /** * References the parent document of the document is a variant. * * @var SearchResult|null */ protected $variantParent = null; /** * @var GroupItem */ protected $groupItem = null; /** * @return GroupItem */ public function getGroupItem(): GroupItem { return $this->groupItem; } /** * @return bool */ public function getHasGroupItem() { return $this->groupItem !== null; } /** * @param GroupItem $group */ public function setGroupItem(GroupItem $group) { $this->groupItem = $group; } /** * @return string */ public function getVariantFieldValue(): string { return $this->variantFieldValue; } /** * @param string $variantFieldValue */ public function setVariantFieldValue(string $variantFieldValue) { $this->variantFieldValue = $variantFieldValue; } /** * @return int */ public function getVariantsNumFound(): int { return $this->variantsNumFound; } /** * @param int $numFound */ public function setVariantsNumFound(int $numFound) { $this->variantsNumFound = $numFound; } /** * @return SearchResult[] */ public function getVariants() { return $this->variants; } /** * @param SearchResult $expandedResult */ public function addVariant(SearchResult $expandedResult) { $this->variants[] = $expandedResult; } /** * @return bool */ public function getIsVariant() { return $this->isVariant; } /** * @param bool $isVariant */ public function setIsVariant($isVariant) { $this->isVariant = $isVariant; } /** * @return SearchResult */ public function getVariantParent() { return $this->variantParent; } /** * @param SearchResult $variantParent */ public function setVariantParent(SearchResult $variantParent) { $this->variantParent = $variantParent; } /** * @return string */ public function getContent() { return $this->fields['content']; } /** * @return boolean */ public function getIsElevated() { return $this->fields['isElevated']; } /** * @return string */ public function getType() { return $this->fields['type']; } /** * @return integer */ public function getId() { return $this->fields['id']; } /** * @return float */ public function getScore() { return $this->fields['score']; } /** * @return string */ public function getUrl() { return $this->fields['url']; } /** * @return string */ public function getTitle() { return $this->fields['title']; } }