自动完成 - Amazon Location Service

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

自动完成

自动完成功能在最终用户键入搜索查询时为他们提供响应式反馈。它基于部分或拼写错误的自由格式文本提供地址和兴趣点的建议。您可以使用地点索引资源来请求自动完成建议,并在应用程序中显示生成的建议。

Amazon Location 不支持存储自动完成建议。如果将用于自动完成调用的地理索引配置为与存储的地理编码一起使用,则会返回错误。要使用存储的地理编码并查询建议,请创建和配置多个地点索引。

本部分介绍如何发送自动完成请求。它从请求的最基本形式开始,然后显示可选参数,您可以使用这些参数来提高自动完成搜索结果的相关性。

使用自动完成功能

您可以使用该SearchPlaceIndexForSuggestions操作提交简单的自动完成建议请求。请求的最简单形式只有一个必需参数,即查询Text

  • Text— 用于生成地点建议的自由格式部分文本。例如,字符串eiffel tow

要限制返回的结果数量,请添加可选MaxResults参数:

  • MaxResults-限制查询响应中返回的结果数量。

您可以使用亚马逊位置 API 或AWS CLI.

API

以下示例SearchPlaceIndexForSuggestions请求搜索地点索引资源 ExamplePlaceIndex,根据部分地名 kamp 获取最多 5 条建议。

POST /places/v0/indexes/ExamplePlaceIndex/search/suggestions Content-type: application/json { "Text": "kamp", "MaxResults": 5 }
AWS CLI

以下示例是搜索地点索引资源的search-place-index-for-suggestions命令 ExamplePlaceIndex,根据部分地名 kamp 搜索最多 5 条建议。

aws location \ search-place-index-for-suggestions \ --index-name ExamplePlaceIndex \ --text kamp \ --max-results 5

调用会SearchPlaceIndexForSuggestions生成一个地点列表,每个地点都有一个名称和一个 ID。您可以使用这些结果来建议用户在键入内容时可能正在搜索的内容,例如在文本框下提供选项的下拉列表。例如,以下是基于用户输入 kamp 的建议结果。

{ "Summary": { "Text": "kamp", "MaxResults": 5, "DataSource": "Esri" }, "Results": [ { "Text": "Kampuchea", "PlaceId": "AQAAAIAADsn2T3KdrRWeaXLeVEyjNx_JfeTsMB0NVCEAnAZoJ-o3nqdlJZAdgcT2oWi1w9pS4wXXOk3O1vsKlGsPyHjV4EJxsu289i3hVO_BUPgP7SFoWAi8BW2v7LvAjQ5NfUPy7a1v9ajT3feIqcUZszWSTqKbJHFYvQqW7wdqhpQq3Wy-et39ZQDWSPLZUzgcjN-6VD2gyKkH0Po7gSm8YSJNSQ" }, { "Text": "Kampoul, Kabul, AFG", "PlaceId": "AQAAAIAAA1mxl_-9ffzXD07rBgo9fh6E01Pd1YKvuT5rz2qBDxqBkhTlgkeiOPR2s5sa3YBLxUqQI8bhymsYcu9R-DkX3L9QSi3CB5LhNPu160iSFJo6H8S1CrxO3QsJALhrr9mdbg0R4R4YDywkhkeBlnbn7g5C5LI_wYx873WeQZuilwtsGm8jcMA0Ya5oK4netQC6piVx6zmnPdwBs-UeXcb_bg" }, { "Text": "Kampala, UGA", "PlaceId": "AQAAAIAAzZfZt3qMruKGObyhP6MM0pqy2L8SULlVWT7a3ertLBRS6Q5n7I4s9D7E0nRHADAj7mL7kvX1Q8HD-mpuiATXNJ1Ix4_V_1B15zHe8jlYKMWvXbgbO8cMpgR2fqYqZMR1x-dfBOO8OoqujKZldvPIDK1kNe3GwcaqvvMWWPMeaGd203brFynubAe-MmFF-Gjz-WBMfUy9og6MV7bkk6NGCA" }, { "Text": "Kampar, Riau, IDN", "PlaceId": "AQAAAIAAvbXXx-srOi111tHOkPdao0GF7WQ_KaZ444SEnevycp6Gtf_2JWgPfCE5bIQCYwya1uZQpX2a8YJoFm2K7Col4fLu7IK0yYOLhZx4kp6QzbG4xEAGzfWtWq6nfbb0lZfuHY6r0g1sRlN1aucvwim4AEcKRzckqaa93JI8064pj6Q59kN37pAa3JX4ayEzH1DzIL3m3oqxzd4O16yGfhAIgA" }, { "Text": "Kampung Pasir Gudang Baru, Johor, MYS", "PlaceId": "AQAAAIAA4HLQHdjUDcaaXLE9wtNIT1cjQYLgkBnMoG2eNN0AaQ8PJoWabLRXmmPUaAj8MAD6vT0i6zqaun5Mixyj7vnYXrk2xp59cbgdqvQaPoWhSCVxBOX0WGs3cZ8TnIRn3c-6v8_UfmqC7es1gUyECfMGK04VBKiwpHwCzjNsqymkd9BC3A9K3QlMgd3dkrGjv_vV94iLlnFTbaecrckl2UDCkA" } ] }

下一部分介绍如何使用这些结果PlaceID中的内容。

使用自动完成结果

调用会SearchPlaceIndexForSuggestions生成一个地点列表,每个地点都有一个名称和一个 ID。您可以使用这些结果来建议用户在键入内容时可能正在搜索的内容,例如在文本框下提供选项的下拉列表。当用户选择其中一个结果时,您可以使用他们选择的 ID 调用该GetPlace操作以返回该地点的详细信息,包括位置、地址或其他详细信息。

注意

PlaceId仅当原始搜索请求和调用中的以下所有内容都相同时,A 才有效GetPlace

  • 顾客AWS 账户

  • AWS 区域

  • 在地点索引资源中指定的数据提供者

通常,您可以GetPlace与亚马逊位置 API 一起使用。以下示例GetPlace请求查找上一节中的建议之一。此示例基于部分地名 kamp

POST /places/v0/indexes/ExamplePlaceIndex/places/AQAAAIAADsn2T3KdrRWeaXLeVEyjNx_JfeTsMB0NVCEAnAZoJ-o3nqdlJZAdgcT2oWi1w9pS4wXXOk3O1vsKlGsPyHjV4EJxsu289i3hVO_BUPgP7SFoWAi8BW2v7LvAjQ5NfUPy7a1v9ajT3feIqcUZszWSTqKbJHFYvQqW7wdqhpQq3Wy-et39ZQDWSPLZUzgcjN-6VD2gyKkH0Po7gSm8YSJNSQ

在位置附近自动完成

使用搜索自动填充地点建议时SearchPlaceIndexForSuggestions,可以通过添加以下可选参数来获得更多与当地相关的建议:

  • BiasPosition— 您要在附近搜索的位置。定义为[longitude, latitude]

以下示例使用SearchPlaceIndexForSuggestions请求在地点索引资源ExamplePlaceIndex中搜索与位置附近的部分查询匹配的地建议 [32.58270.3169]。

POST /places/v0/indexes/ExamplePlaceIndex/search/suggestions Content-type: application/json { "Text": "kamp", "BiasPosition": [32.5827,0.3169] }

如果选择不同的建议,BiasPosition则返回的相同建议Text可能会有所不同,例如 [-96.797732.7776]。

在边界框内自动完成

通过添加以下可选参数,您可以缩小自动完成搜索的范围,使其仅接收有关位于给定边界内的地点的建议:

  • FilterBBox— 您指定的边界框,用于将结果筛选为方框边界内的坐标。定义为[LongitudeSW, LatitudeSW, LongitudeNE, LatitudeNE]

    注意

    请求不能同时包含FilterBBoxBiasPosition参数。在请求中指定这两个参数会返回ValidationException错误。

以下示例使用SearchPlaceIndexForSuggestions请求在地点索引资源ExamplePlaceIndex中搜索与部分查询 kamp 相匹配的地点建议,这些建议包含在边界框中,其中:

  • 边界框西南角的经度为 32.5020

  • 边界框西南角的纬度为 0.2678

  • 边界框东北角的经度为 32.6129

  • 边界框东北角的纬度为 0.3502

POST /places/v0/indexes/ExamplePlaceIndex/search/suggestions Content-type: application/json { "Text": "kamp", "FilterBBox": [ 32.5020, 0.2678, 32.6129, 0.3502 ] }

如果选择不同的值,Text则返回的相同建议会有所不同FilterBBox,例如 [-97.965132.0640-95.119634.0436]。

在一个国家/地区内自动完成

通过添加以下可选参数,您可以缩小自动完成搜索的范围,使其仅接收位于给定国家或一组国家/地区内的地点的建议:

  • FilterCountries— 您要在其中搜索地点建议的国家。使用 ISO 3166 三个字母的国家/地区代码,您最多可以在一个请求中指定 100 个国家。例如,在澳大利亚使用AUS

以下示例使用SearchPlaceIndexForSuggestions请求在地点索引资源ExamplePlaceIndex中搜索与部分查询 kamp 相匹配且包含在乌干达、肯尼亚或坦桑尼亚境内的地点建议:

POST /places/v0/indexes/ExamplePlaceIndex/search/suggestions Content-type: application/json { "Text": "kamp", "FilterCountries": ["UGA", "KEN", "TZA"] }

如果选择不同的FilterCountries列表,例如 [” 美国 “],则返回的相同Text建议会有所不同。

响应示例

以下是使用文本 kamp 为该SearchPlaceIndexForSuggestions操作建议自动完成的示例响应。

{ "Summary": { "Text": "kamp", "MaxResults": 5, "DataSource": "Esri" }, "Results": [ { "Text": "Kampuchea", "PlaceId": "AQAAAIAADsn2T3KdrRWeaXLeVEyjNx_JfeTsMB0NVCEAnAZoJ-o3nqdlJZAdgcT2oWi1w9pS4wXXOk3O1vsKlGsPyHjV4EJxsu289i3hVO_BUPgP7SFoWAi8BW2v7LvAjQ5NfUPy7a1v9ajT3feIqcUZszWSTqKbJHFYvQqW7wdqhpQq3Wy-et39ZQDWSPLZUzgcjN-6VD2gyKkH0Po7gSm8YSJNSQ" }, { "Text": "Kampoul, Kabul, AFG", "PlaceId": "AQAAAIAAA1mxl_-9ffzXD07rBgo9fh6E01Pd1YKvuT5rz2qBDxqBkhTlgkeiOPR2s5sa3YBLxUqQI8bhymsYcu9R-DkX3L9QSi3CB5LhNPu160iSFJo6H8S1CrxO3QsJALhrr9mdbg0R4R4YDywkhkeBlnbn7g5C5LI_wYx873WeQZuilwtsGm8jcMA0Ya5oK4netQC6piVx6zmnPdwBs-UeXcb_bg" }, { "Text": "Kampala, UGA", "PlaceId": "AQAAAIAAzZfZt3qMruKGObyhP6MM0pqy2L8SULlVWT7a3ertLBRS6Q5n7I4s9D7E0nRHADAj7mL7kvX1Q8HD-mpuiATXNJ1Ix4_V_1B15zHe8jlYKMWvXbgbO8cMpgR2fqYqZMR1x-dfBOO8OoqujKZldvPIDK1kNe3GwcaqvvMWWPMeaGd203brFynubAe-MmFF-Gjz-WBMfUy9og6MV7bkk6NGCA" }, { "Text": "Kampar, Riau, IDN", "PlaceId": "AQAAAIAAvbXXx-srOi111tHOkPdao0GF7WQ_KaZ444SEnevycp6Gtf_2JWgPfCE5bIQCYwya1uZQpX2a8YJoFm2K7Col4fLu7IK0yYOLhZx4kp6QzbG4xEAGzfWtWq6nfbb0lZfuHY6r0g1sRlN1aucvwim4AEcKRzckqaa93JI8064pj6Q59kN37pAa3JX4ayEzH1DzIL3m3oqxzd4O16yGfhAIgA" }, { "Text": "Kampung Pasir Gudang Baru, Johor, MYS", "PlaceId": "AQAAAIAA4HLQHdjUDcaaXLE9wtNIT1cjQYLgkBnMoG2eNN0AaQ8PJoWabLRXmmPUaAj8MAD6vT0i6zqaun5Mixyj7vnYXrk2xp59cbgdqvQaPoWhSCVxBOX0WGs3cZ8TnIRn3c-6v8_UfmqC7es1gUyECfMGK04VBKiwpHwCzjNsqymkd9BC3A9K3QlMgd3dkrGjv_vV94iLlnFTbaecrckl2UDCkA" } ] }