{"record":{"id":"4cb2ba6be88f4a25","repo":"microsoft/semantic-kernel","slug":"no-searchable-fields-found-for-hybrid-search","errorCode":null,"errorMessage":"No searchable fields found for hybrid search.","messagePattern":"No searchable fields found for hybrid search\\.","errorType":"exception","errorClass":"VectorStoreOperationException","httpStatus":null,"severity":"error","filePath":"python/semantic_kernel/connectors/azure_ai_search.py","lineNumber":608,"sourceCode":"                            )\n                        ]\n                else:\n                    raise VectorStoreOperationException(\"No vector or keywords provided for vector search.\")\n            case SearchType.KEYWORD_HYBRID:\n                if values is None:\n                    raise VectorStoreOperationException(\"No vector and/or keywords provided for search.\")\n                vector_field = self.definition.try_get_vector_field(options.vector_property_name)\n                search_args[\"search_fields\"] = (\n                    [options.additional_property_name]\n                    if options.additional_property_name is not None\n                    else [\n                        field.name\n                        for field in self.definition.fields\n                        if field.field_type == FieldTypes.DATA and field.is_full_text_indexed\n                    ]\n                )\n                if not search_args[\"search_fields\"]:\n                    raise VectorStoreOperationException(\"No searchable fields found for hybrid search.\")\n                search_args[\"search_text\"] = values\n\n                vector = await self._generate_vector_from_values(values, options) if vector is None else vector\n                if vector is not None:\n                    search_args[\"vector_queries\"] = [\n                        VectorizedQuery(\n                            vector=vector,  # type: ignore\n                            fields=vector_field.name if vector_field else None,\n                        )\n                    ]\n                else:\n                    search_args[\"vector_queries\"] = [\n                        VectorizableTextQuery(\n                            text=values,\n                            fields=vector_field.name if vector_field else None,\n                        )\n                    ]\n        try:","sourceCodeStart":590,"sourceCodeEnd":626,"githubUrl":"https://github.com/microsoft/semantic-kernel/blob/c028a0c7dc4f0814cdcbaba9d998f187a41197bf/python/semantic_kernel/connectors/azure_ai_search.py#L590-L626","documentation":"Raised by _inner_search for SearchType.KEYWORD_HYBRID when no searchable text fields can be resolved. Search fields come from either options.additional_property_name (a single explicit field) or, by default, from DATA fields in the definition with is_full_text_indexed=True. If additional_property_name is None and no DATA field has is_full_text_indexed set, search_fields is empty and hybrid search cannot run, so a VectorStoreOperationException fires.","triggerScenarios":"Running a KEYWORD_HYBRID search on a collection whose definition marks no data field as is_full_text_indexed=True, and where VectorSearchOptions.additional_property_name is not set. The keyword half of hybrid search has no field to search over.","commonSituations":"Defining a record with only a key + vector field and no searchable text field; setting is_full_text_indexed on a VECTOR field instead of a DATA field; forgetting to mark the content/title field as full-text searchable.","solutions":["Mark at least one DATA field with is_full_text_indexed=True in your VectorStoreCollectionDefinition (e.g. the field holding the text content).","Alternatively, set VectorSearchOptions.additional_property_name to the name of the field to search.","Re-create the collection/index after changing the definition so the schema reflects the searchable field."],"exampleFix":"// before\nfields=[key_field, vector_field]  # no searchable text field\n\n// after\nfields=[\n    key_field,\n    field(type_='str', name='content', is_full_text_indexed=True),\n    vector_field,\n]","handlingStrategy":"validation","validationCode":"def has_searchable_fields(definition, additional_property_name=None) -> bool:\n    if additional_property_name is not None:\n        return True\n    return any(\n        f.field_type.value == \"data\" and f.is_full_text_indexed\n        for f in definition.fields\n    )\n\nassert has_searchable_fields(collection.definition, opts.additional_property_name)","typeGuard":null,"tryCatchPattern":"from semantic_kernel.exceptions import VectorStoreOperationException\ntry:\n    res = await collection.search(search_type=SearchType.KEYWORD_HYBRID, values=q)\nexcept VectorStoreOperationException as e:\n    if \"No searchable fields\" in str(e):\n        # mark a DATA field is_full_text_indexed=True, recreate index, then retry\n        ...\n    raise","preventionTips":["Mark at least one text DATA field with is_full_text_indexed=True in the definition.","Or set VectorSearchOptions.additional_property_name to the searchable field.","Re-create the index after changing the definition."],"tags":["schema","azure-ai-search","hybrid-search","data-model"],"backgroundTag":null,"analyzedSha":"c028a0c7dc4f0814cdcbaba9d998f187a41197bf","analyzedAt":"2026-08-13T13:48:05.040Z","schemaVersion":2},"datasetVersion":"2026-08-13T14:17:21.547Z"}