You are here

class SolrFieldDefinition in Search API Solr 4.x

Same name and namespace in other branches
  1. 8.3 src/TypedData/SolrFieldDefinition.php \Drupal\search_api_solr\TypedData\SolrFieldDefinition
  2. 8.2 src/TypedData/SolrFieldDefinition.php \Drupal\search_api_solr\TypedData\SolrFieldDefinition

Defines a class for Solr field definitions.

Hierarchy

Expanded class hierarchy of SolrFieldDefinition

1 file declares its use of SolrFieldDefinition
SolrFieldManager.php in src/SolrFieldManager.php

File

src/TypedData/SolrFieldDefinition.php, line 10

Namespace

Drupal\search_api_solr\TypedData
View source
class SolrFieldDefinition extends DataDefinition implements SolrFieldDefinitionInterface {

  /**
   * Human-readable labels for Solr schema properties.
   *
   * @var string[]
   */
  protected static $schemaLabels = [
    'I' => 'Indexed',
    'T' => 'Tokenized',
    'S' => 'Stored',
    'M' => 'Multivalued',
    'V' => 'TermVector Stored',
    'o' => 'Store Offset With TermVector',
    'p' => 'Store Position With TermVector',
    'O' => 'Omit Norms',
    'L' => 'Lazy',
    'B' => 'Binary',
    'C' => 'Compressed',
    'f' => 'Sort Missing First',
    'l' => 'Sort Missing Last',
  ];

  /**
   * An array of Solr schema properties for this field.
   *
   * @var string[]
   */
  protected $schema;

  /**
   * {@inheritdoc}
   */
  public function isList() {
    return $this
      ->isMultivalued();
  }

  /**
   * {@inheritdoc}
   */
  public function isReadOnly() {
    return TRUE;
  }

  /**
   * {@inheritdoc}
   */
  public function isComputed() {
    return FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function isRequired() {
    return FALSE;
  }

  /**
   * {@inheritdoc}
   */
  public function getSchema() {
    if (!isset($this->schema)) {
      foreach (str_split(str_replace('-', '', $this->definition['schema'])) as $key) {
        $this->schema[$key] = isset(self::$schemaLabels[$key]) ? self::$schemaLabels[$key] : $key;
      }
    }
    return $this->schema;
  }

  /**
   * {@inheritdoc}
   */
  public function getDynamicBase() {
    return isset($this->field['dynamicBase']) ? $this->field['dynamicBase'] : NULL;
  }

  /**
   * {@inheritdoc}
   */
  public function isIndexed() {
    $this
      ->getSchema();
    return isset($this->schema['I']);
  }

  /**
   * {@inheritdoc}
   */
  public function isTokenized() {
    $this
      ->getSchema();
    return isset($this->schema['T']);
  }

  /**
   * {@inheritdoc}
   */
  public function isStored() {
    $this
      ->getSchema();
    return isset($this->schema['S']);
  }

  /**
   * {@inheritdoc}
   */
  public function isMultivalued() {
    $this
      ->getSchema();
    return isset($this->schema['M']);
  }

  /**
   * {@inheritdoc}
   */
  public function isTermVectorStored() {
    $this
      ->getSchema();
    return isset($this->schema['V']);
  }

  /**
   * {@inheritdoc}
   */
  public function isStoreOffsetWithTermVector() {
    $this
      ->getSchema();
    return isset($this->schema['o']);
  }

  /**
   * {@inheritdoc}
   */
  public function isStorePositionWithTermVector() {
    $this
      ->getSchema();
    return isset($this->schema['p']);
  }

  /**
   * {@inheritdoc}
   */
  public function isOmitNorms() {
    $this
      ->getSchema();
    return isset($this->schema['O']);
  }

  /**
   * {@inheritdoc}
   */
  public function isLazy() {
    $this
      ->getSchema();
    return isset($this->schema['L']);
  }

  /**
   * {@inheritdoc}
   */
  public function isBinary() {
    $this
      ->getSchema();
    return isset($this->schema['B']);
  }

  /**
   * {@inheritdoc}
   */
  public function isCompressed() {
    $this
      ->getSchema();
    return isset($this->schema['C']);
  }

  /**
   * {@inheritdoc}
   */
  public function isSortMissingFirst() {
    $this
      ->getSchema();
    return isset($this->schema['f']);
  }

  /**
   * {@inheritdoc}
   */
  public function isSortMissingLast() {
    $this
      ->getSchema();
    return isset($this->schema['l']);
  }

  /**
   * {@inheritdoc}
   */
  public function isPossibleKey() {
    return !$this
      ->getDynamicBase() && $this
      ->isStored() && !$this
      ->isMultivalued();
  }

  /**
   * {@inheritdoc}
   */
  public function isSortable() {
    return $this
      ->isIndexed() && !$this
      ->isMultivalued();
  }

  /**
   * {@inheritdoc}
   */
  public function isFulltextSearchable() {
    return $this
      ->isIndexed() && $this
      ->isTokenized();
  }

  /**
   * {@inheritdoc}
   */
  public function isFilterable() {
    return $this
      ->isIndexed() && !$this
      ->isTokenized();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
DataDefinition::$definition protected property The array holding values for all definition keys.
DataDefinition::addConstraint public function Adds a validation constraint. Overrides DataDefinitionInterface::addConstraint
DataDefinition::create public static function Creates a new data definition. 5
DataDefinition::createFromDataType public static function Creates a new data definition object. Overrides DataDefinitionInterface::createFromDataType 5
DataDefinition::getClass public function Returns the class used for creating the typed data object. Overrides DataDefinitionInterface::getClass 1
DataDefinition::getConstraint public function Returns a validation constraint. Overrides DataDefinitionInterface::getConstraint
DataDefinition::getConstraints public function Returns an array of validation constraints. Overrides DataDefinitionInterface::getConstraints 1
DataDefinition::getDataType public function Returns the data type of the data. Overrides DataDefinitionInterface::getDataType 2
DataDefinition::getDescription public function Returns a human readable description. Overrides DataDefinitionInterface::getDescription
DataDefinition::getLabel public function Returns a human readable label. Overrides DataDefinitionInterface::getLabel
DataDefinition::getSetting public function Returns the value of a given setting. Overrides DataDefinitionInterface::getSetting 2
DataDefinition::getSettings public function Returns the array of settings, as required by the used class. Overrides DataDefinitionInterface::getSettings 2
DataDefinition::isInternal public function Determines whether the data value is internal. Overrides DataDefinitionInterface::isInternal 1
DataDefinition::offsetExists public function This is for BC support only. @todo: Remove in https://www.drupal.org/node/1928868.
DataDefinition::offsetGet public function This is for BC support only. @todo: Remove in https://www.drupal.org/node/1928868.
DataDefinition::offsetSet public function This is for BC support only. @todo: Remove in https://www.drupal.org/node/1928868.
DataDefinition::offsetUnset public function This is for BC support only. @todo: Remove in https://www.drupal.org/node/1928868.
DataDefinition::setClass public function Sets the class used for creating the typed data object.
DataDefinition::setComputed public function Sets whether the data is computed.
DataDefinition::setConstraints public function Sets an array of validation constraints.
DataDefinition::setDataType public function Sets the data type. 1
DataDefinition::setDescription public function Sets the human-readable description.
DataDefinition::setInternal public function Sets the whether the data value should be internal.
DataDefinition::setLabel public function Sets the human-readable label.
DataDefinition::setReadOnly public function Sets whether the data is read-only.
DataDefinition::setRequired public function Sets whether the data is required.
DataDefinition::setSetting public function Sets a definition setting. 2
DataDefinition::setSettings public function Sets the array of settings, as required by the used class. 2
DataDefinition::toArray public function Returns all definition values as array.
DataDefinition::__construct public function Constructs a new data definition object. 1
DataDefinition::__sleep public function 2
SolrFieldDefinition::$schema protected property An array of Solr schema properties for this field.
SolrFieldDefinition::$schemaLabels protected static property Human-readable labels for Solr schema properties.
SolrFieldDefinition::getDynamicBase public function Gets the "dynamic base" of this field. Overrides SolrFieldDefinitionInterface::getDynamicBase
SolrFieldDefinition::getSchema public function Gets an array of field properties. Overrides SolrFieldDefinitionInterface::getSchema
SolrFieldDefinition::isBinary public function Determines whether this field is binary. Overrides SolrFieldDefinitionInterface::isBinary
SolrFieldDefinition::isCompressed public function Determines whether this field is compressed. Overrides SolrFieldDefinitionInterface::isCompressed
SolrFieldDefinition::isComputed public function Determines whether the data value is computed. Overrides DataDefinition::isComputed
SolrFieldDefinition::isFilterable public function Determine whether a field is suitable for filtering. Overrides SolrFieldDefinitionInterface::isFilterable
SolrFieldDefinition::isFulltextSearchable public function Determine whether a field is suitable for fulltext search. Overrides SolrFieldDefinitionInterface::isFulltextSearchable
SolrFieldDefinition::isIndexed public function Determines whether this field is indexed. Overrides SolrFieldDefinitionInterface::isIndexed
SolrFieldDefinition::isLazy public function Determines whether this field is lazy-loaded. Overrides SolrFieldDefinitionInterface::isLazy
SolrFieldDefinition::isList public function Returns whether the data is multi-valued, i.e. a list of data items. Overrides DataDefinition::isList
SolrFieldDefinition::isMultivalued public function Determines whether this field is multi-valued. Overrides SolrFieldDefinitionInterface::isMultivalued
SolrFieldDefinition::isOmitNorms public function Determines whether this field omits norms when indexing. Overrides SolrFieldDefinitionInterface::isOmitNorms
SolrFieldDefinition::isPossibleKey public function Determine whether this field may be suitable for use as a key field. Overrides SolrFieldDefinitionInterface::isPossibleKey
SolrFieldDefinition::isReadOnly public function Determines whether the data is read-only. Overrides DataDefinition::isReadOnly
SolrFieldDefinition::isRequired public function Determines whether a data value is required. Overrides DataDefinition::isRequired
SolrFieldDefinition::isSortable public function Determine whether a field is suitable for sorting. Overrides SolrFieldDefinitionInterface::isSortable
SolrFieldDefinition::isSortMissingFirst public function Determines whether this field sorts missing entries first. Overrides SolrFieldDefinitionInterface::isSortMissingFirst
SolrFieldDefinition::isSortMissingLast public function Determines whether this field sorts missing entries last. Overrides SolrFieldDefinitionInterface::isSortMissingLast
SolrFieldDefinition::isStored public function Determines whether this field is stored. Overrides SolrFieldDefinitionInterface::isStored
SolrFieldDefinition::isStoreOffsetWithTermVector public function Determines whether this field has the "termOffsets" option set. Overrides SolrFieldDefinitionInterface::isStoreOffsetWithTermVector
SolrFieldDefinition::isStorePositionWithTermVector public function Determines whether this field has the "termPositions" option set. Overrides SolrFieldDefinitionInterface::isStorePositionWithTermVector
SolrFieldDefinition::isTermVectorStored public function Determines whether this field has stored term vectors. Overrides SolrFieldDefinitionInterface::isTermVectorStored
SolrFieldDefinition::isTokenized public function Determines whether this field is tokenized. Overrides SolrFieldDefinitionInterface::isTokenized
TypedDataTrait::$typedDataManager protected property The typed data manager used for creating the data types.
TypedDataTrait::getTypedDataManager public function Gets the typed data manager. 2
TypedDataTrait::setTypedDataManager public function Sets the typed data manager. 2