使用Wikipedia API的自动建议实体

问题描述 投票:0回答:1

我想向我的用户提供自动建议的功能,他们可以从语义实体数据库的已知“事物”列表中进行选择。

我正在考虑使用Wikipedia Media API,而不是设置自己的:https://www.mediawiki.org/wiki/API:Main_page

[有一个用于测试请求的API工具:https://www.mediawiki.org/wiki/Special:ApiSandbox

例如,如果用户喜欢猫:https://www.wikidata.org/wiki/Q146

请求将是:https://en.wikipedia.org/w/api.php?action=query&format=jsonfm&prop=pageterms&list=&meta=&titles=Chttps://en.wikipedia.org/w/api.php?action=query&format=jsonfm&prop=pageterms&list=&meta=&titles=Cahttps://en.wikipedia.org/w/api.php?action=query&format=jsonfm&prop=pageterms&list=&meta=&titles=Cat

用户将从下拉菜单中选择Cat,然后保存ID。

这是一个好方法吗?我该如何改善?

semantic-web wikipedia-api autosuggest linked-data
1个回答
0
投票

我设法使用Wikipedia REST API加载自动建议:

https://en.wikipedia.org/w/api.php?action=query&format=json&gsrlimit=15&generator=search&origin=*&gsrsearch=

角度代码:

this.resultsCtrl = new FormControl();
this.resultsCtrl.valueChanges
  .debounceTime(400)
  .subscribe(name => {
    if (name) {
      this.filteredResults = this.filterResults(name);
    }
  });

filterResults(name: string) {
  return Observable.create(obs => {
    const displaySuggestions = function (response) {
      if (!response) {
        obs.error(status);
      } else {
        obs.next(Object.keys(response.query.pages).map(key => response.query.pages[key]));
        obs.complete();
      }
    };
    this.http.get('https://en.wikipedia.org/w/api.php?action=query&format=json&gsrlimit=15&generator=search&origin=*&gsrsearch='
      + encodeURI(name))
      .subscribe(displaySuggestions);
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.