def create_literature_index()

in 3-ai-native-e2e-sample/backend/utils/search/search_utils.py [0:0]


def create_literature_index(project_client: AIProjectClient, index_name: str = "literature-index") -> SearchIndex:
    """Create an Azure AI Search index for literature documents.
    
    Args:
        project_client: The AIProjectClient instance
        index_name: Name of the search index to create
        
    Returns:
        The created SearchIndex instance
    """
    try:
        search_conn = project_client.connections.get_default(
            connection_type=ConnectionType.AZURE_AI_SEARCH,
            include_credentials=True
        )
        if not search_conn:
            raise RuntimeError("No default Azure AI Search connection found")
        
        fields = [
            SimpleField(name="id", type=SearchFieldDataType.String, key=True),
            SearchableField(name="title", type=SearchFieldDataType.String, filterable=True),
            SearchableField(name="abstract", type=SearchFieldDataType.String),
            SearchableField(name="content", type=SearchFieldDataType.String),
            SearchableField(name="authors", type=SearchFieldDataType.Collection(SearchFieldDataType.String)),
            SimpleField(name="publicationDate", type=SearchFieldDataType.DateTimeOffset, filterable=True, sortable=True)
        ]
        
        index = SearchIndex(name=index_name, fields=fields)
        index_client = SearchIndexClient(
            endpoint=search_conn.endpoint_url,
            credential=AzureKeyCredential(search_conn.key)
        )
        
        # Delete existing index if it exists
        if index_name in [x.name for x in index_client.list_indexes()]:
            logger.info(f"Deleting existing index: {index_name}")
            index_client.delete_index(index_name)
        
        created_index = index_client.create_index(index)
        logger.info(f"Created search index: {created_index.name}")
        return created_index
        
    except Exception as e:
        logger.error(f"Failed to create literature index: {str(e)}")
        raise