Jef*_*Lee 13 search foursquare
我从Foursquare的场地搜索API得到了一些不稳定的结果,我想知道是否有人有关于如何处理输入参数以获得最"直观"结果的任何提示.
例如,假设我正在使用Google Maps API在"纽约,纽约"周围搜索名为"Ise Sushi"的场所,该场地相当于(lat:40.7143528,lon:-74.00597309999999).插入Foursquare Venue API,我们得到:
https://api.foursquare.com/v2/venues/search?query=ise%20sushi&ll=40.7143528%2C-74.00597309999999
Run Code Online (Sandbox Code Playgroud)
这会产生相当令人沮丧的结果:我正在寻找的场地最终位于列表的第11位.有趣的是,降低坐标的精度似乎会产生更好的结果.例如,假设我们将坐标舍入为3位有效数字:
https://api.foursquare.com/v2/venues/search?query=ise%20sushi&ll=40.7%2C-74.0
Run Code Online (Sandbox Code Playgroud)
这一次,我正在寻找的场地最终排在第二位,即使它实际上离搜索中心更远(1072米,使用第一个查询时为833米).
另一个似乎有助于提高搜索质量的修改是用下划线代替空格来分隔我们的搜索词.例如,这是带下划线的原始查询:
https://api.foursquare.com/v2/venues/search?query=ise_sushi&ll=40.7143528%2C-74.00597309999999
Run Code Online (Sandbox Code Playgroud)
这产生了最直观的结果:我正在寻找的场地首先出现,并伴随着另一个结果,"伊势餐厅"(被标记为"寿司餐厅").对于它的价值,这实际上似乎是在Foursquare自己的网站上进行的相同搜索的结果集.
我很好奇我应该从中吸取哪些教训.我应该降低坐标的精度吗?我是否应该使用下划线连接我的搜索字词,如果是,那是否会限制用户订购搜索字词的方式?
尽管我们可以对排名进行改进以找到这种遥远的精确匹配,但它通常也有助于指定intent=browse(尽管在本例中看起来像这样,但目前,它可能会给您带来更糟糕的结果)。默认情况下,/venues/search 使用intent=checkin,它会尽力查找附近的匹配项进行签入,但会牺牲场地可能与您的搜索相匹配的其他方式。了解更多信息,请访问https://developer.foursquare.com/docs/venues/search