返回

Azure AI 认知搜索:“'search' 参数需要可搜索文本字段”错误的解决指南

python

Azure AI 认知搜索:解决“'search' 参数需要可搜索文本字段”错误

问题概述

在使用 Python SDK 和前端与 Azure AI 认知搜索集成时,你可能会遇到以下错误消息:

“'search' 参数需要索引中至少一个可搜索文本字段。\r\n参数名:searchFields”

解决方法

该错误表明索引中没有可用于搜索的文本字段。要解决此问题,请按照以下步骤操作:

1. 检查“元数据”字段的设置

索引架构中的“元数据”字段是一个包含多个可搜索字段的复杂字段。确保所有这些字段都已设置为 searchable=True

2. 检查“矢量”字段的设置

索引架构还包括一个名为“矢量”的矢量字段。确保该字段已设置为 searchable=True

3. 验证索引配置

  • 导航到 Azure 门户中的认知搜索服务。
  • 选择受影响的索引并转到“字段”选项卡。
  • 确认“矢量”和“元数据”字段的“可搜索”属性设置为 true

代码示例

以下更新后的架构代码片段展示了配置正确的“元数据”和“矢量”字段:

fields = [
    # ... 其他字段 ...
    ComplexField(name="metadata", fields=[
        SearchableField(name="code", type=SearchFieldDataType.String, nullable=True, searchable=True, filterable=True, sortable=True, facetable=True),
        # ... 其他可搜索字段 ...
    ]),
    SearchField(name="vector", type=SearchFieldDataType.Collection(SearchFieldDataType.Single), searchable=True, vector_search_dimensions=1536, vector_search_profile_name="uniclass-rag-vector-config"),
    # ... 其他字段 ...
]

总结

通过确保索引中至少存在一个可搜索文本字段,你可以轻松解决“'search' 参数需要可搜索文本字段”错误。重新生成索引以应用更改,并确保你的代码和前端配置与更新后的架构保持一致。

常见问题解答

1. 我如何知道索引中是否存在可搜索字段?

  • 检查索引的“字段”选项卡,确认存在可搜索字段。

2. 如何将字段标记为可搜索?

  • 在索引架构中,将 searchable 属性设置为 True

3. 我可以在不重新生成索引的情况下修改字段设置吗?

  • 不,必须重新生成索引才能应用架构更改。

4. 我可以看到用于搜索的实际文本字段吗?

  • 是的,可以在索引的“查看”选项卡中查看可搜索字段的内容。

5. 如何排除某些字段进行搜索?

  • 在索引架构中,将 searchable 属性设置为 False 以排除字段。