如果我试图通过他们的API获取维基百科上的页面的语言链接:
我得到了一份结果清单。
但是如果我像拉尔夫一样贬低拉尔夫的R:
我没有结果。
查看返回的信息,看起来维基百科将第一个例子中的“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&gsrsearch=wreck-it%20ralph&gsrlimit=1&prop=info
答案 0 :(得分: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只返回确切的结果。