如何在不知道所有字符的确切情况的情况下使维基百科API正常化和重定向?

Pet*_*ric 5 redirect mediawiki normalization wikipedia-api mediawiki-api

如果我尝试通过他们的API获取维基百科上的页面的语言链接,如下所示:

http://en.wikipedia.org/w/api.php?action=query&prop=langlinks&format=json&lllimit=10&llurl=&titles=wreck-it%20Ralph&redirects=

我得到了一份结果清单.

但是,如果我像拉尔夫一样贬低拉尔夫的R:

http://en.wikipedia.org/w/api.php?action=query&prop=langlinks&format=json&lllimit=10&llurl=&titles=wreck-it%20ralph&redirects=

我没有结果.

看看返回的信息,看起来维基百科在第一个例子中将"wreck-it Ralph"标准化为"Wreck-it Ralph",重定向到"Wreck-It Ralph".

在第二个例子中,"wreck-it ralph"被标准化为"Wreck-it ralph",它显然没有重定向到任何地方.

http://wikipedia.org上搜索"wreck-it ralph" 当然有效:

http://www.wikipedia.org/search-redirect.php?family=wikipedia&search=wreck-it+ralph&language=en

我能否以相同的方式使langlinks查询工作,当我不知道搜索词的所有字符的确切情况时帮助我?

更新Sorawee的回答中我设法找到了如何进行不区分大小写的搜索:https://en.wikipedia.org/w/api.php?action = query&generator = search&format = json&thegsrsearch = wreck-it%20ralph>rlimit = 1托=信息

Sor*_*ase 6

在MediaWiki中,所有标题将自动大写.因此,"wreck-it Ralph"和"Wreck-it Ralph"是同一页.同样,"wreck-it ralph"和"Wreck-it ralph"也是同一页.请注意,大写仅限于第一个字母.

MediaWiki还有一个名为"重定向页面"的页面.重定向页面可以将您从页面重定向到另一个完全不同的页面.例如,https://en.wikipedia.org/wiki/Template:cn会将您重定向到https://en.wikipedia.org/wiki/Template:Citation_needed.这些页面由用户创建,而不是软件.

你问的情况如下图所示.

"wreck-it Ralph"= normalized =>"Wreck-it Ralph"=重定向=>"Wreck-It Ralph"(找到)

"wreck-it ralph"= normalized =>"Wreck-it ralph"(不存在)

所以现在你知道你不能查询页面"wreck-it ralph",因为它不存在.

但是,如果你想从"wreck-it Ralph"中查询,你可能会或者可能不会得到"Wreck-It Ralph"的langlinks.这取决于参数"&redirects =".如果你没有这个参数,它将不会返回任何langlinks,因为"wreck-it Ralph"本身没有langlinks.使用"&redirects =",api将在重定向页面上搜索langlinks(如果存在).因此,它将返回您想要的langlinks.你可以比较:

对于为什么http://www.wikipedia.org/search-redirect.php?family=wikipedia&search=wreck-it+ralph&language=en工作的问题,答案是search-redirect.php不是api.它搜索并返回最近的匹配,而api只返回确切的结果.