【问题标题】:issue with amazon cloudsearch search with location亚马逊云搜索与位置搜索的问题
【发布时间】:2013-07-05 20:48:07
【问题描述】:

我的问题是带有位置的 amazon cloudSearch ..

当我对带有位置的搜索产品使用排名表达式时发现此错误

[“信息”]=> 对象(stdClass)#16(4){ [“摆脱”]=> 字符串(80)“ee6c7090a20a654dbfd52a5f2ce0eeb96e766f609a8889bc1af02ab95e4065a6ce8ed690aa624373” [“时间-毫秒”]=> 整数(4) [“CPU时间-毫秒”]=> 整数(0) [“消息”]=> 数组(2){ [0]=> 对象(stdClass)#17(3){ [“严重性”]=> 字符串(7)“警告” [“代码”]=> 字符串(27)“CS-RankExpressionParseError” [“消息”]=> string(328) "无法解析排名表达式 (rank-geo=Math.sqrt(Math.pow(Math.abs(22345345-534534),2) Math.pow(Math.abs(934593495-34534534),2)) ):ANTLR 解析器返回:-memory-(1):错误 10:缺少令牌,偏移量 47 附近 [索引:0(开始:0-停止:0)='',类型 行:1 LinePos:47] : 缺少 RPAREN " } [1]=> 对象(stdClass)#18(3){ [“严重性”]=> 字符串(7)“警告” [“代码”]=> string(41) "CS-InvalidFieldOrRankAliasInRankParameter" [“消息”]=> string(47) "无法为等级 'bininet' 创建分数对象" } } }

而我的搜索请求网址是

htp://www.search_endpoint."/search?bq=".urlencode($term)."&rank=geo&rank-geo=Math.sqrt(Math.pow(Math.abs(22345345 - 534534),2 )+Math.pow(Math.abs(934593495 - 34534534),2))&size=$size&start=$start&return-fields=".implode(',',$return_fields

我在哪里做错了? 没有等级表达它工作正常。 我认为错误是在定义位置的表达式中,但找不到任何其他解决方案 请帮帮我。

谢谢

【问题讨论】:

    标签: amazon amazon-cloudsearch


    【解决方案1】:

    我通过使用找到了解决方案

      &rank-geo=urlencode('Math.sqrt(Math.pow(Math.abs(22345345 - doc.latitude),2)+Math.pow(Math.abs(934593495 - doc.longitude),2))')
    

    这是排名表达式示例

    您可以通过两种方式在亚马逊云搜索中使用自定义排名表达式

    1. 在亚马逊云搜索控制台管理面板中创建一个新的排名表达式并定义表达式 即数学表达式,在搜索 url 中只需附加该排名表达式名称,如下所示

      &rank=geo // 地理排名表达式应在云搜索控制台管理面板上定义

    2. 第二种方法是在搜索url中以动态方式包含排名名称和expession

       &rank=distancesearch&rank-distancesearch=urlencode('Math.sqrt(Math.pow(Math.abs(22345345 - doc.latitude),2)+Math.pow(Math.abs(934593495 - doc.longitude),2))')
      

      这样就不需要在amazon cloudSearch控制台管理面板上做排名表达了

    【讨论】:

      猜你喜欢
      • 2013-01-01
      • 2017-10-18
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多