eZ\Publish\Core\FieldType\Selection\SearchField::getIndexData PHP Method

getIndexData() public method

Get index data for field for search backend.
public getIndexData ( eZ\Publish\SPI\Persistence\Content\Field $field, eZ\Publish\SPI\Persistence\Content\Type\FieldDefinition $fieldDefinition ) : eZ\Publish\SPI\Search\Field[]
$field eZ\Publish\SPI\Persistence\Content\Field
$fieldDefinition eZ\Publish\SPI\Persistence\Content\Type\FieldDefinition
return eZ\Publish\SPI\Search\Field[]
    public function getIndexData(Field $field, FieldDefinition $fieldDefinition)
    {
        $indexes = array();
        $values = array();
        $fieldSettings = $fieldDefinition->fieldTypeConstraints->fieldSettings;
        $options = $fieldSettings['options'];
        $positionSet = array_flip($field->value->data);
        foreach ($options as $index => $value) {
            if (isset($positionSet[$index])) {
                $values[] = $value;
                $indexes[] = $index;
            }
        }
        return array(new Search\Field('selected_option_value', $values, new Search\FieldType\MultipleStringField()), new Search\Field('selected_option_index', $indexes, new Search\FieldType\MultipleIntegerField()), new Search\Field('selected_option_count', count($indexes), new Search\FieldType\IntegerField()), new Search\Field('sort_value', implode('-', $indexes), new Search\FieldType\StringField()), new Search\Field('fulltext', $values, new Search\FieldType\FullTextField()));
    }