我的网站内容可以使用由Sphinx搜索提供支持的搜索栏进行搜索(仅提及因为我最终会使用Sphinx的地理搜索功能)。
表格字段包括:
Id, title, description, tags, geolocation
如何确定字符串的任何部分是否包含对地理位置的引用?我正在寻找的解决方案可能会在PHP中执行,然后我将像往常一样使用Sphinx进行搜索。
例如,如果有人搜索以下任何内容:
Car parts in California
Car parts near San Francisco
90210 car parts
然后,我希望能够在所需位置的某个半径内返回与car parts
匹配的所有条目的列表。
我对如何使这个问题更简单的任何建议持开放态度。
注意:用户的地理位置子字符串条目是可选的。因此,解决方案需要确定它的存在,然后相应地采取行动。
答案 0 :(得分:2)
您可以使用几个API:
http://www.datasciencetoolkit.org/< - 看看Geodict
http://developer.yahoo.com/geo/placemaker/guide/web-service.html
http://developers.metacarta.com/api/< - 查看Query Parser
......他们执行所有"繁重的工作"为你:)
另外,可以用狮身人面像自己制作自己的!
下载geonames数据库http://www.geonames.org/
的副本将其粘贴在数据库表中,并在其上创建一个sphinx索引。
然后获取您的查询字符串并针对' geo'运行SPH_MATCH_ANY查询。表。
然后查看sphinx结果集,并提取任何匹配的地方 - 以创建没有地名的新查询。
此sphinx索引还将返回您可用于实际查询的地理坐标:)
(你可以稍微优化一下,特别注意' in / near'并且只是删除它们,或者使用它们来明确地识别地名)
祝你好运!(邮政编码处理 - 也可以用同样的方式完成 - 也将邮政编码放在sphinx索引中。有可下载的在线副本。或者可以作为特殊情况处理 - 寻找一个数字)< / p>