如何使用不同大小的搜索条件通过API稳健地检查维基百科页面

时间:2012-02-10 09:25:54

标签: php wikipedia-api

我有一个网站,允许用户提交野生动物的照片。上传后,他们可以识别照片上的硬币,例如" Polar bear"。

这使我从维基百科获取有关该物种的信息,使用该搜索词:

$query =  "http://en.wikipedia.org/w/api.php?action=query&rvprop=content&format=json&titles=" . $query;
$pages = file_get_contents($query);

此类查询返回以下内容之一:

  • 一组pageid,然后我可以查询该页面的内容
  • 没什么,因为根本没有任何匹配
  • 一个REDIRECT结果,允许我使用正确的名称解析页面

我遇到的问题与套管有关。例如,搜索词" Milky stork",什么都不返回,甚至不返回重定向。 " Milky Stork"确实有效。对查询中的每个单词进行大写,也不是解决方案,因为可能是某些页面是小写的,而大写查询不起作用。没有一致性。

我正在寻找一种方法来使其更加强大。不应该因为错误的套管而导致查询失败,甚至无法在用户侧预测。

有没有人知道这方面的解决方案?除了尝试每种可能的外壳组合?

注意:有些人可能会建议使用dbpedia,但这不能满足我的总需求。

2 个答案:

答案 0 :(得分:3)

不幸的是,没有简单的解决方案 - 阅读http://www.mediawiki.org/wiki/API:Opensearch#Note_on_case_sensitivity

您可以尝试使用opensearch来查找合适的大小写(如果普通查询没有返回任何可用的大小): http://en.wikipedia.org/w/api.php?action=opensearch&search=milky+stork&namespace=0&suggest= 会给你

    ["milky stork",["Milky Stork"]]

答案 1 :(得分:1)

我认为尝试所有可能的组合是一种可行的解决方案。因此,您的查询可能如下所示:

http://en.wikipedia.org/w/api.php?action=query&rvprop=content&format=json&titles=Milky stork|Milky Stork

请注意,维基百科上的第一个字母不区分大小写。