0

我以 ids 的形式存储了谷歌知识图谱 API (GKGA) 的一些搜索结果,这些结果由 GKGA 返回。

现在我想再次使用 id 获得整个结果,但这似乎不起作用。经过一些研究,我发现了一个可以从这里工作的查询: 如何使用 Google Knowledge Graph API

我的请求有点不同,主要是 id:

https://kgsearch.googleapis.com/v1/entities:search?callback=jQuery321016748583817510942_1521200076900&indent=true&key= {MY_API_KEY}&ids=kg:/m/031sc&_=1521200076901

引用的工作请求是:

https://kgsearch.googleapis.com/v1/entities:search?ids=%2Fm%2F014nm_&key= {API-KEY}

我能看到的主要区别是 ID 不同:

我的是:

  • 我的是:公斤:/米/031sc
  • 他是:kg:/m/014nm_ 但在 url 中是 %2Fm%2F014nm_

所以我尝试在 id 和整个 url 上使用 encodeURI 但没有任何区别。

那么问题来了:我需要用我的 id 做什么才能获得 GKGA 的结果?

目前我像这样实现我的请求:(如果您想知道我的请求 URL 中的 JQuery 部分)

let service_url = 'https://kgsearch.googleapis.com/v1/entities:search';
let requestParams = {
                'indent': true,
                'key': '{API-KEY}',
                "ids":"kg:/m/031sc"
            };
$.getJSON(service_url + '?callback=?', requestParams, (response) => {
}).done((response) => {
      console.log('Response is: ' + JSON.stringify(response));
});
4

1 回答 1

2

对我有用的解决方案是使用“:”之后的部分作为实际 ID。这让以下解决方案支持的不仅仅是 id:

    let service_url = 'https://kgsearch.googleapis.com/v1/entities:search';
    let dataurl = 'key={API-KEY}'; //just the key, not the moustaches '{','}'
    for (let i = 0; i < allIds.length; i++) {
        dataurl += '&ids='+ allIds[i].split(':')[1];
    }
    $.getJSON(service_url + '?callback=?', dataurl, (response) => {
    }).done((response) => {});
于 2018-03-16T15:22:30.330 回答