与位置有关的亚马逊云搜索问题

时间:2013-07-04 10:49:58

标签: amazon amazon-cloudsearch

我的问题是亚马逊cloudSearch的位置..

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

       ["info"]=>
  object(stdClass)#16 (4) {
    ["rid"]=>
    string(80) "ee6c7090a20a654dbfd52a5f2ce0eeb96e766f609a8889bc1af02ab95e4065a6ce8ed690aa624373"
    ["time-ms"]=>
    int(4)
    ["cpu-time-ms"]=>
    int(0)
    ["messages"]=>
    array(2) {
      [0]=>
      object(stdClass)#17 (3) {
        ["severity"]=>
        string(7) "warning"
        ["code"]=>
        string(27) "CS-RankExpressionParseError"
        ["message"]=>
        string(328) "Could not parse rank expression (rank-geo=Math.sqrt(Math.pow(Math.abs(22345345-534534),2) Math.pow(Math.abs(934593495-34534534),2))): The ANTLR parser returned: -memory-(1)  : error 10 : Missing token, at offset 47
    near [Index: 0 (Start: 0-Stop: 0) ='', type<7> Line: 1 LinePos:47]
     : Missing RPAREN 
"
      }
      [1]=>
      object(stdClass)#18 (3) {
        ["severity"]=>
        string(7) "warning"
        ["code"]=>
        string(41) "CS-InvalidFieldOrRankAliasInRankParameter"
        ["message"]=>
        string(47) "Unable to create score object for rank 'bineet'"
      }
    }
  }

我的搜索请求网址是

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

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

由于

1 个答案:

答案 0 :(得分:0)

我使用

找到了解决方案
  &rank-geo=urlencode('Math.sqrt(Math.pow(Math.abs(22345345 - doc.latitude),2)+Math.pow(Math.abs(934593495 - doc.longitude),2))')

这是rank-expression示例

您可以在亚马逊云搜索中使用自定义排名表达式双向

  1. 在亚马逊云搜索控制台管理面板中创建一个新的排名表达式并定义表达式                     即数学表达式和搜索网址只是简单地追加等级表达名称,如下所示

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

  2. 第二种方式是在搜索网址中以动态方式包括等级名称和消费

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

    这样就无需在亚马逊cloudSearch控制台管理面板上进行排名表达