为 Microsoft 365 多地理位置配置搜索

多地理位置 租户 将具有聚合搜索功能,允许搜索查询从 租户内的任意位置返回结果。

默认情况下,从这些入口点进行的搜索将返回聚合结果,即使每个搜索索引位于其相关的 地理位置 内:

  • OneDrive for Business
  • Delve
  • SharePoint 主页
  • 搜索中心

此外,还可以为使用 SharePoint 搜索 API 的自定义搜索应用程序配置多地理位置搜索功能。

有关说明(包括任何限制和差异),请查看为 OneDrive for Business 多地理位置配置搜索

验证 Microsoft 365 多地理位置配置

下面是建议在公司中更广泛地推出 Microsoft 365 多地理位置前,在验证计划中添加的一些基本用例。 完成这些测试以及与公司相关的其他任何用例后,可以选择继续在初始试点组中添加用户。

OneDrive for Business:

从 Microsoft 365 应用启动器中选择“OneDrive”,并确认根据用户的 PDL 自动定向到用户的相应 地理位置 。 OneDrive for Business 现在应该开始在相应位置进行预配。 预配后,立即尝试上传并下载一些文档。

OneDrive 移动应用:

使用测试帐户凭据登录到 OneDrive 移动应用。 确认你可以看到 OneDrive for Business 文件,并可以通过移动设备与它们进行交互。

OneDrive 同步客户端:

确认OneDrive 同步客户端在登录时自动检测到OneDrive for Business Geography 位置。 如果需要下载同步客户端,可以在 OneDrive 库中单击“ 同步 ”。

Office 应用程序:

确认可以通过从 Office 应用程序(如 Word)登录来访问OneDrive for Business。 打开 Office 应用程序,然后选择 “OneDrive – <TenantName>”。 Office 将检测你的 OneDrive 位置,并向你显示你可以打开的文件。

共享:

尝试共享 OneDrive 文件。 确认人员选取器显示您的所有 SharePoint Online 用户,而不考虑其 地理位置

在多地理位置环境中,每个 地理位置 位置都有自己的搜索索引和搜索中心。 在用户搜索时,查询会扇出以覆盖所有索引,并合并返回的结果。

例如,一个 Geography 位置中的用户可以搜索存储在另一个 Geography 位置中的内容,或搜索 SharePoint 网站上限制为其他 Geography 位置的内容。 如果用户有权访问此内容,便会看到搜索结果。

哪些搜索客户端在多地理位置环境中工作?

这些客户端可以从所有地理位置返回结果:

  • OneDrive
  • Delve
  • SharePoint 主页
  • 搜索中心
  • 使用 SharePoint 搜索 API 的自定义搜索应用程序

OneDrive

设置多地理位置环境后,在 OneDrive 中搜索的用户就会从所有 地理位置 获取结果。

Delve

设置多地理位置环境后,在 Delve 中搜索的用户就会从所有 地理位置 获取结果。

Delve 源和个人资料卡仅显示存储在中心位置的文件的预览。 对于存储在 “卫星地理位置” 位置中的文件,将改为显示文件类型的图标。

SharePoint 主页

设置多地理位置环境后,用户将在 SharePoint 主页上看到来自多个 地理位置 的新闻、最近和关注的网站。 如果他们使用 SharePoint 主页上的搜索框,他们将从多个 地理位置 获得合并的结果。

搜索中心

设置多地理位置环境后,每个搜索中心将继续仅显示其所在 地理位置 的结果。 管理员必须 更改每个搜索中心的设置 才能从所有 地理位置 获取结果。 之后,在搜索中心进行搜索的用户将从所有 地理位置 获取结果。

自定义搜索应用程序

与往常一样,自定义搜索应用程序使用现有的 SharePoint 搜索 REST API 与搜索索引交互。 若要从所有或某些 地理位置 获取结果,应用程序必须 调用 API 并在请求中包含新的多地理位置查询参数 。 这会触发扇出所有 Geography 位置的查询。

在多地理位置环境中搜索有何不同?

你所熟悉的某些搜索功能在多地理位置环境中的工作方式可能有所不同。

功能 运作方式 解决方法
升级的结果 可以在不同级别创建包含升级结果的查询规则:整个 _Tenant_、网站集或网站。 在多地理位置环境中,在 _Tenant_ 级别定义升级的结果,以将结果提升到所有 _Geography_ 位置的搜索中心。 如果只想在网站集或网站的 _Geography_ 位置的搜索中心提升结果,请在网站集或网站级别定义已升级的结果。 这些结果不会在其他 _Geography_ 位置中升级。 如果每个 _Geography_ 位置不需要不同的升级结果,例如不同的旅行规则,我们建议在 _Tenant_ 级别定义提升的结果。
搜索精简 搜索从 _Tenant_ 的所有 _Geography_ 位置返回精简条件,然后对其进行聚合。 聚合是尽力而为,这意味着优化器计数可能不是 100% 的准确率。 对于大多数搜索驱动方案,此准确性已足够。 对于依赖于精简条件完整性的搜索驱动应用程序,请单独查询每个 _Geography_ 位置。
多地理位置搜索不支持数值精简程序的动态存储桶。 对数值优化器使用 “Discretize”参数
文档 ID 如果要开发依赖于文档 ID 的搜索驱动应用程序,请注意,多地理位置环境中的文档 ID 在 _Geography_ 位置中并不唯一,它们根据 _Geography_ 位置是唯一的。 我们添加了一个标识 _Geography_ 位置的列。 使用此列来实现唯一性。 此列名为“GeoLocationSource”。
结果数 搜索结果页显示来自 _Geography_ 位置的组合结果,但不能分页超过 500 个结果。
混合搜索 在具有 云混合搜索的混合 SharePoint 环境中,本地内容将添加到中心位置的 Microsoft 365 索引中。

在多地理位置环境中不支持的搜索有哪些?

你所熟悉的某些搜索功能在多地理位置环境中可能不受支持。

搜索功能 注意
仅应用身份验证 在多地理位置搜索中不支持仅应用身份验证(来自服务的特权访问)。
来宾 来宾仅从其搜索的 _Geography_ 位置获取结果。

如何在多地理位置环境中进行搜索?

所有搜索客户端均使用现有 SharePoint Search REST API 与搜索索引进行交互。

显示 SharePoint 搜索 REST API 如何与搜索索引交互的关系图。

  1. 搜索客户端使用查询属性 EnableMultiGeoSearch= true 来调用搜索 REST 终结点。
  2. 查询将发送到租户中的所有地理位置
  3. 将合并每个 地理位置 的搜索结果并对其进行排名。
  4. 客户端将获得统一的搜索结果。

请注意,在收到来自所有地理位置的结果之前,我们不会合并搜索结果。 这意味着,与仅包含一个地理位置的环境中的搜索相比,多地理位置搜索会有额外的延迟。

获取搜索中心以显示来自所有地理位置的结果

每个搜索中心具有多个类别,必须单独设置每个类别。

  1. 请确保执行这些步骤所使用的帐户具有编辑搜索结果页和搜索结果 Web 部件的权限。

  2. 导航到搜索结果页(请参阅搜索结果页的列表

  3. 选择要设置的垂直,单击右上角的 “设置齿轮” 图标,然后单击“ 编辑页面”。 “搜索结果”页将在编辑模式下打开。

    在“设置”中编辑页面选择。

  4. 在搜索结果 Web 部件中,将鼠标指针移动到 Web 部件的右上角,单击箭头,然后单击菜单上的“ 编辑 Web 部件 ”。 搜索结果 Web 部件工具窗格在页面右上角的功能区下方打开。

    编辑 Web 部件选择。

  5. 在 Web 部件工具窗格中的“设置”部分,在“结果控制设置”下,选择“显示多地理位置结果”,获取搜索结果 Web 部件,以显示来自所有地理位置的结果。

  6. 单击“确定”,以保存更改并关闭 Web 部件工具窗格。

  7. 单击主菜单“页面”选项卡上的“签入”,查看对搜索结果 Web 部件所做的更改。

  8. 使用页面顶部的注释中提供的链接来发布更改。

获取自定义搜索应用程序,以显示来自所有(或部分)地理位置的结果

自定义搜索应用程序通过使用对 SharePoint 搜索 REST API 的请求指定查询参数,从所有或部分 地理位置 获取结果。 根据查询参数,查询会扇出到所有 地理位置 或某些地理位置。 例如,如果只需查询 Geography 位置的子集来查找相关信息,则可以将扇出控制为仅这些位置。 如果请求成功,SharePoint 搜索 REST API 将返回响应数据。

要求

对于每个地理位置,必须确保组织中所有用户都获得了根网站的 读取 权限级别, (例如 contosoAPAC.sharepoint.com/ 和 contosoEU.sharepoint.com/) 了解权限

查询参数

EnableMultiGeoSearch - 这是一个布尔值,该值指定是否应将查询扇出到多地理位置 租户的其他地理位置的索引。 将其设置为 true 以扇出查询;设置为 false 则不扇出查询。 如果不包含此参数,则默认值为 false(除非针对使用企业搜索中心模板的网站执行 REST API 调用,在这种情况下,默认值为 true)。 如果在非多地理位置环境中使用该参数,则会忽略该参数。

ClientType - 此参数为字符串。 输入每个搜索应用程序的唯一客户端名称。 如果不包括此参数,则不会将查询扇出到其他地理位置。

MultiGeoSearchConfiguration - 这是一个可选列表,其中列出了当 EnableMultiGeoSearch为 true 时,多地理位置租户中要扇出查询的地理位置。 如果不包括此参数,或将其保留为空白,则会将查询扇出到所有地理位置。 对于每个地理位置,请以 JSON 格式输入以下各项:

项目 说明
DataLocation _Geography_ 位置,例如 NAM。
终结点 要连接到的终结点,例如 https://contoso.sharepoint.com
SourceId 结果源的 GUID,例如 B81EAB55-3140-4312-B0F4-9459D1B4FFEE。

如果省略 DataLocation 或 EndPoint,或者如果 DataLocation 重复,则请求将失败。 可以使用 Microsoft Graph 获取有关租户地理位置的终结点的信息

响应数据

MultiGeoSearchStatus - 这是 SharePoint 搜索 API 响应请求时返回的属性。 属性的值是一个字符串,并提供有关 SharePoint 搜索 API 返回的结果的以下信息:

说明
完整 来自所有 _Geography_ 位置的完整结果。
部分 来自一个或多个 _Geography_ 位置的部分结果。 由于暂时性错误,结果不完整。

使用 REST 服务查询

借助 GET 请求指定 URL 中的查询参数。 使用 POST 请求,可以在正文中以 JavaScript 对象表示法 (JSON) 格式传递查询参数。

请求标头

名称
Content-Type application/json;odata=verbose

扇出到所有地理位置的示例 GET 请求

https:// \<tenant\>/\_api/search/query?querytext='sharepoint'&Properties='EnableMultiGeoSearch:true'&ClientType='my\_client\_id'

扇出部分地理位置的示例 GET 请求

https:// \<tenant\>/\_api/search/query?querytext='site'&ClientType='my_client_id'&Properties='EnableMultiGeoSearch:true, MultiGeoSearchConfiguration:[{DataLocation\\:"NAM"\\,Endpoint\\:"https\\://contosoNAM.sharepoint.com"\\,SourceId\\:"B81EAB55-3140-4312-B0F4-9459D1B4FFEE"}\\,{DataLocation\\:"CAN"\\,Endpoint\\:"https\\://contosoCAN.sharepoint-df.com"}]'

注意

MultiGeoSearchConfiguration 属性的地理位置列表中的逗号和冒号前面带有反斜杠字符。 这是因为 GET 请求使用冒号分隔属性,并使用逗号分隔属性的参数。 如果不使用反斜杠作为转义字符,则 MultiGeoSearchConfiguration 属性会被错误解读。

扇出到所有地理位置的示例 POST 请求

    {
    "request": {
            "__metadata": {
            "type": "Microsoft.Office.Server.Search.REST.SearchRequest"
        },
        "Querytext": "sharepoint",
        "Properties": {
            "results": [
                {
                    "Name": "EnableMultiGeoSearch",
                    "Value": {
                        "QueryPropertyValueTypeIndex": 3,
                        "BoolVal": true
                    }
                }
            ]
        },
        "ClientType": "my_client_id"
        }
    }

扇出到部分地理位置的示例 POST 请求

    {
        "request": {
            "Querytext": "SharePoint",
            "ClientType": "my_client_id",
            "Properties": {
                "results": [
                    {
                        "Name": "EnableMultiGeoSearch",
                        "Value": {
                            "QueryPropertyValueTypeIndex": 3,
                            "BoolVal": true
                        }
                    },
                    {
                        "Name": "MultiGeoSearchConfiguration",
                        "Value": {
                        "StrVal": "[{\"DataLocation\":\"NAM\",\"Endpoint\":\"https://contoso.sharepoint.com\",\"SourceId\":\"B81EAB55-3140-4312-B0F4-9459D1B4FFEE\"},{\"DataLocation\":\"CAN\",\"Endpoint\":\"https://contosoCAN.sharepoint.com\"}]",
                            "QueryPropertyValueTypeIndex": 1
                        }
                    }
                ]
            }
        }
    }

使用 CSOM 查询

下面是向 所有地理位置 扇出的示例 CSOM 查询:

var keywordQuery = new KeywordQuery(ctx);
keywordQuery.QueryText = query.SearchQueryText;
keywordQuery.ClientType = <enter a string here>;
keywordQuery.Properties["EnableMultiGeoSearch"] = true;