/**
  * @see ezfSolrDocumentFieldBase::getFieldName()
  * @param eZContentClassAttribute $classAttribute
  * @param null $subAttribute
  * @param string $context
  *
  * @return bool|string
  */
 public static function getFieldName(eZContentClassAttribute $classAttribute, $subAttribute = null, $context = 'search')
 {
     switch ($classAttribute->attribute('data_type_string')) {
         case 'ezobjectrelation':
             if ($subAttribute && $subAttribute !== '' && $subAttribute != self::DEFAULT_SUBATTRIBUTE && ($type = self::getTypeForSubattribute($classAttribute, $subAttribute, $context))) {
                 if (in_array($subAttribute, array_keys(eZSolr::metaAttributes()))) {
                     return parent::generateSubmetaFieldName($subAttribute, $classAttribute);
                 } else {
                     return parent::generateSubattributeFieldName($classAttribute, $subAttribute, $type);
                 }
             } else {
                 return parent::generateAttributeFieldName($classAttribute, self::$subattributesDefinition[self::DEFAULT_SUBATTRIBUTE_TYPE]);
             }
             break;
         case 'ezobjectrelationlist':
             if ($subAttribute and $subAttribute !== '' and $subAttribute != self::DEFAULT_SUBATTRIBUTE and $type = self::getTypeForSubattribute($classAttribute, $subAttribute, $context)) {
                 if (in_array($subAttribute, array_keys(eZSolr::metaAttributes()))) {
                     return parent::generateSubmetaFieldName($subAttribute, $classAttribute);
                 } else {
                     return parent::generateSubattributeFieldName($classAttribute, $subAttribute, $type);
                 }
             } else {
                 // return the default field name here.
                 return parent::generateAttributeFieldName($classAttribute, self::$subattributesDefinition[self::DEFAULT_SUBATTRIBUTE_TYPE]);
             }
             break;
         default:
             break;
     }
     return false;
 }