redirect - 如何在不知道所有字符的确切大小写的情况下使 Wikipedia API 规范化和重定向?

标签 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=

我得到一个结果列表。

但是,如果我像这样将 Ralph 中的 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&gsrsearch=wreck-it%20ralph&gsrlimit=1&prop=info

最佳答案

在 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" =redirected=> "Wreck-It Ralph" (found)

"wreck-it ralph" =normalized=> "Wreck-it ralph" (not exist)


所以现在你知道你不能查询页面“wreck-it ralph”,因为它不存在。
但是,如果您想从“wreck-it Ralph”进行查询,您可能会也可能不会获得“Wreck-It Ralph”的语言链接。这取决于参数“&redirects=”。如果你没有这个参数,它不会返回任何语言链接,因为“wreck-it Ralph”本身没有语言链接。使用“&redirects=”,api 将在重定向页面上搜索 langlinks(如果存在)。因此,它将返回您想要的 langlinks。你可以比较:
  • http://en.wikipedia.org/w/api.php?action=query&prop=langlinks&format=json&lllimit=10&llurl=&titles=wreck-it%20Ralph&redirects=
  • http://en.wikipedia.org/w/api.php?action=query&prop=langlinks&format=json&lllimit=10&llurl=&titles=wreck-it%20Ralph

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

    关于redirect - 如何在不知道所有字符的确切大小写的情况下使 Wikipedia API 规范化和重定向?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21211037/

    相关文章:

    c++ - 操作内存中的数据而不是文件

    bash - 将电子邮件文本从 procmail 重定向到 bash 脚本

    javascript - 使用 D3 范围将数字标准化为 100?

    database - 函数依赖推理规则

    python - 如何标准化热图

    php - 如何设置已发送到邮件的 url,并且该链接应该重定向到 php 中的另一个 url

    PHP 多重重定向

    api - 当页面标题与文件名不同时,如何查询 wikipedia api 中的文件?

    html - MediaWiki:Secure_HTML 和 Google Checkout 按钮格式

    javascript - MediaWiki 扩展中加载 js 不起作用