%PDF- %PDF-
| Direktori : /www/varak.net/wiki.varak.net/extensions/CirrusSearch/includes/Search/ |
| Current File : //www/varak.net/wiki.varak.net/extensions/CirrusSearch/includes/Search/CirrusIndexField.php |
<?php
namespace CirrusSearch\Search;
use SearchEngine;
use SearchIndexFieldDefinition;
use SearchIndexField;
use CirrusSearch\SearchConfig;
/**
* Basic ElasticSearch index field
* @since 1.28
*/
abstract class CirrusIndexField extends SearchIndexFieldDefinition {
/**
* Name of the type in Elastic
* @var string
*/
protected $typeName = 'unknown';
/**
* @var SearchConfig
*/
protected $config;
/**
* Specific mapping flags
* @var int
*/
protected $mappingFlags;
/**
* CirrusIndexField constructor.
* @param string $name
* @param int $type
* @param SearchConfig $config
*/
public function __construct( $name, $type, SearchConfig $config ) {
parent::__construct( $name, $type );
$this->config = $config;
}
/**
* Set flags for specific mapping
* @param $flags
* @return $this
*/
public function setMappingFlags( $flags ) {
$this->mappingFlags = $flags;
return $this;
}
/**
* Get mapping for specific search engine
* @param SearchEngine $engine
* @return array
*/
public function getMapping( SearchEngine $engine ) {
if ( !( $engine instanceof \CirrusSearch ) ) {
throw new \LogicException( "Cannot map CirrusSearch fields for another engine." );
}
$config = [
'type' => $this->typeName,
];
if ( $this->checkFlag( SearchIndexField::FLAG_NO_INDEX ) ) {
$config['index'] = 'no';
}
return $config;
}
}