def _handle_field(self, marqo_doc, field_name, field_content):
        """Handle a field in a Marqo document by processing it and updating the index schema if needed.
        
        Args:
            marqo_doc: The Marqo document being processed
            field_name: Name of the field
            field_content: Content of the field
        """
        # Process field using parent class handler
        super()._handle_field(marqo_doc, field_name, field_content)

        # Add lexical field if content is a string
        if isinstance(marqo_doc[field_name], str):
            self._add_lexical_field_to_index(field_name)

        # Add string array field if content is list of strings and index version supports it
        is_string_array = (
            isinstance(field_content, list) and 
            all(isinstance(elem, str) for elem in field_content)
        )
        if (is_string_array and
                # This is required so that we can update schema on the fly
                self.marqo_index.index_supports_partial_updates):
            self._add_string_array_field_to_index(field_name)
Handle a field in a Marqo document by processing it and updating the index schema if needed.
        
        Args:
            marqo_doc: The Marqo document being processed
            field_name: Name of the field
            field_content: Content of the field
        
src/marqo/core/semi_structured_vespa_index/semi_structured_add_document_handler.py