我想向我的用户提供自动建议的功能,他们可以从语义实体数据库的已知“事物”列表中进行选择。
我正在考虑使用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。
这是一个好方法吗?我该如何改善?
我设法使用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);
});
}