关于接近搜索

“邻近性搜索”允许您将唯一位置与网站上的任何页面相关联,然后按距离给定位置的接近性(距离)搜索结果并对结果进行排序。

例如,假定您已将美国邮政编码元数据填充到您网站上的页面,例如:

<meta name="zipcode" content="84057">

然后,您将帐户配置为ZIP代码元数据的索引。 在​Settings > Metadata > Definitions > Add New Field​中,在Add Field页面上设置以下选项:

  • 字段名称: zip
  • 元标记名称:zipcode
  • 数据类型: Location
  • 排序: Ascending
  • 默认单位:Miles

在为站点编制索引后,请执行以下搜索:

...&sp_q_location_1=84057&sp_x_1=zip&sp_q_max_1=100&sp_s=zip_proximity

结果集包含位于邮政编码84057100英里范围内的任何文档,按距此邮政编码的升序排序。

您还可以为美国地点使用电话区域代码。 或者,您可以使用经纬度对在站点元数据和搜索条件中指定位置。 根据所提供的数据的形式自动确定位置类型。

三位数的位置值(“DDD”,其中每个“D”代表0-9的十进制数字)被视为美国电话区号。

五或五段四位数字位置值(“DDDDD”或“DDDDD-DDDD”)被视为美国邮政编码。

以"±DDD.DDDD.DDD.DDDDD"的精确形式的位置值被视为经纬度对。 第一个签名数字值指定纬度,第二个签名数字值表示经度。

重要说明:如果指定正纬度值或正经度值,或同时指定两者,则URL中的“+”字符必须编码为 %2b。否则,“+”被解释为空格,并且该值不被识别为有效位置。 例如,假设您的纬度值为+49.2394,经度值为-123.1892。URL的位置部分(已编码“+”)如下所示:

...&sp_q_location_1=%2b49.2394-123.1892...
  • 正纬度值表示赤道以北的度数。
  • 负纬度值表示赤道以南的度数。
  • 正经度值表示“Prime Meridian”的“East”度。
  • 负经度值表示Prime Meridian的West度。

例如,值“+48.8577+002.2950”表示赤道以北48.8577度,Prime Meridian的东侧2.295度,即法国巴黎埃菲尔铁塔的确切位置。 数字符号和每个数字是必需的,甚至前导零和尾随零。 例如,三个值“48.8577+2.2950”、“+48.8577+2.2950”和“+48.8577+02.295”不是位置。 第一个值缺少纬度上的前导符号。 第二个值缺少经度上的两个前导零。 第三个值缺少经度上的尾随零。 请确保仔细检查索引日志中是否存在任何与位置相关的问题。

按邻近度搜索时,会为该搜索创建一个特殊的“邻近输出字段”。 该字段填充了在搜索条件中指定的位置和与每个搜索结果关联的位置之间的相对距离。 此特殊字段是为在搜索条件中使用的位置类型字段命名的,该搜索条件在结尾处添加了“_proximity”。

在上面的示例搜索中,结果按升序“zip_proximity”排序。 即指定的ZIP代码(84057)与每个结果的“zip”字段位置之间的距离。 您还可以使用此特殊的“proximity output field”来显示每个搜索结果的相对距离(以公里或英里为单位),使用<Search-Display-Field>搜索模板标记。

请参阅搜索模板标记

您还可以不使用sp_s选项进行搜索。 在这种情况下,结果按得分排序(sps=0,这是默认值)。得分受每个结果与通过spqlocation[_#]参数指定的邻近搜索位置的相对距离的影响。 添加新的cgi参数sp_q_max_relevent_distance[#],以可选地控制应用于邻近搜索的相关性计算。

下面是一个邻近相关搜索示例:

...&sp_q_location_1=84057&sp_x_1=zip&sp_q_max_1=100&sp_q_2=shirt&sp_x_2=title&sp_q_max_relevant_distance_2=50

结果集包含位于邮政编码84057100英里内的任何文档,并在标题字段中包含单词“shirt”,该单词按受邻近相关性评分影响的评分排序。 接近度组件的完美相关得分表示距离为0。 接近度分量的最低相关得分表示距离仅超过50英里。

您可以通过查看搜索CGI参数参考主题中的sp_locationsp_location_#sp_q_minsp_q_min_#sp_q_maxsp_q_max_#sp_s来了解有关接近性搜索的更多信息。

请参阅搜索CGI参数

请参阅添加新的元标记字段

在此页面上