public function mapFieldNameFromType($field, $type, $hint = '') {
		if (isset($this->solrFields[$field])) {
			return $this->solrFields[$field];
		}

		if (strpos($type, '(')) {
			$type = substr($type, 0, strpos($type, '('));
		}

		if ($hint && is_string($hint) && $hint != 'default') {
			return str_replace(':field', $field, $hint);
		}

		if ($pos = strpos($field, ':')) {
			$field = substr($field, 0, $pos);
		}

		// otherwise, lets use a generic field for it
		switch ($type) {
			case 'MultiValueField': {
					return $field . '_ms';
			}
			case 'Text':
			case 'HTMLText': {
					return $field . '_t';
			}
			case 'Date':
			case 'SS_Datetime': {
					return $field . '_dt';
			}
			case 'Str':
			case 'Enum': {
					return $field . '_ms';
			}
			case 'Attr': {
				return 'attr_' . $field;
			}
			case 'Double':
			case 'Decimal':
			case 'Currency':
			case 'Float':
			case 'Money': {
				return $field . '_f';
			}
			case 'Int':
			case 'Integer': {
				return $field . '_i';
			}
			case 'SolrGeoPoint': {
				return $field . '_p';
			}
			case 'String': {
				return $field . '_s';
			}
			case 'Varchar':
			default: {
				return $field . '_as';
			}
		}
	}