【问题标题】:How can I check whether the location declared by a twitter's user exists?如何检查推特用户声明的位置是否存在?
【发布时间】:2016-02-10 12:13:59
【问题描述】:

我正在做一个 twitter 爬虫,并在其上使用 Lucene 构建了一个搜索引擎。由于许多用户提交了不存在的位置(例如“在我的厨房”、“仙境”、“从洛杉矶到巴黎”......),我认为我应该根据他们的位置检查要索引的用户,以便通过位置搜索使它们更容易到达。我通过采样英文推文(使用 TwitterStream.sample("en"))来检索用户。

我的第一个想法是从世界上所有城市的一些网站下载并检查是否有匹配项。然而,这种方法存在一个问题:很难找到包含世界上所有城市的文档,其中所有城市都以所有可能的语言拼写。事实上,用户可以用英语或他自己的语言提交他的城市(或国家)的名称。

【问题讨论】:

    标签: java twitter lucene geolocation information-retrieval


    【解决方案1】:

    您需要使用地理编码google mapsyandex maps

    我面临这样一个事实,即第一个链接告诉 google API 查找 美国城市默认。所以......如果用户说他在“巴黎”,谷歌 API 会回复我 NO_REPONSE

    Red Light District

    我非常关注第一个链接和第二个链接 关注较少,因为后者似乎只对 javascript 应用程序(我都是用 java 做的)。

    没有。这是不正确的。您可以通过 HTTP 请求获取信息,请参阅HTTP request parameters

    yandex maps 的小代码 sn-p 使用 apache http client

    private void request(String geocode) throws IOException {
            HttpResponse response = Request.Post(SEARCH_URL).version(HttpVersion.HTTP_1_1)
                    .bodyForm(createForm(geocode).build(), Charsets.UTF_8).useExpectContinue()
                    .connectTimeout(CONNECTION_TIMEOUT_MILS)
                    .socketTimeout(CONNECTION_TIMEOUT_MILS)
                    .execute().returnResponse();
    
            assertStatus(response, geocode);
            getCoordinatesFromResponse(response, geocode);
        }
    
        private Form createForm(String geocode) {
            return Form.form().add("format", "json").add("results", "1").add("geocode", geocode);
        }
    
        private void assertStatus(HttpResponse response, String requestString) {
            StatusLine statusLine = response.getStatusLine();
            if (statusLine.getStatusCode() >= ERROR_STATUS_MIN) {
                throw new RuntimeException(String.format(
                        "Error sending request '%s' to the map service, server response: %s",
                        requestString, response));
            }
        }
    

    【讨论】:

    • 我已经阅读了第一个链接,关注度很高,而第二个链接关注度较低,因为后者似乎仅对 javascript 应用程序有用(我在 java 中做所有事情)。我面临这样一个事实,即第一个链接默认告诉 google API 在美国寻找城市。所以...如果用户说他在“巴黎”,谷歌 API 会回复我 NO_REPONSE。更何况,如果他所有的推文都是用英文写的,我怎么知道巴黎是否存在?顺便说一句,我已经投票赞成你的答案
    • @UtenteStack 感谢您的投票,我更新了我的答案。
    • 谢谢,使用google api需要运行tomcat吗?
    • 我无法从 Maven 中心存储库安装库。你能链接我任何指南或任何我可以学习的网站吗?我已经尝试了几个小时......我发现了这个:maven.apache.org/guides/mini/guide-3rd-party-jars-local.html,但它不起作用,我不明白
    • @UtenteStack 你想安装哪个库?您使用哪个 IDE?您有哪种项目结构?
    猜你喜欢
    • 2011-02-20
    • 2019-07-16
    • 1970-01-01
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多