【问题标题】:Wikipedia api fulltext search to return articles with title, snippet and imageWikipedia api 全文搜索以返回带有标题、片段和图像的文章
【发布时间】:2014-11-11 12:28:15
【问题描述】:

我一直在寻找一种方法来根据搜索字符串查询 wikipedia api,以获取具有以下属性的文章列表:

  • 标题
  • 片段/说明
  • 与文章相关的一张或多张图片。

我还必须使用 jsonp 进行查询。

我尝试过使用 list=search 参数

http://en.wikipedia.org/w/api.php?action=query&list=search&prop=images&format=json&srsearch=test&srnamespace=0&srprop=snippet&srlimit=10&imlimit=1

但它似乎忽略了 prop=images,我也尝试过使用 prop=imageinfo 和 prop=pageimages 的变体。但是它们都给了我与仅使用 list=search 相同的结果。

我也尝试过 action=opensearch

http://en.wikipedia.org/w/api.php?action=opensearch&search=test&limit=10&format=xml

当我设置 format=xml 时,这正是我想要的,但在使用 format=json 时返回一个简单的页面标题数组,因此由于 jsonp 要求而失败。

还有其他方法可以做到这一点吗?我真的很想在一个请求中解决这个问题,而不是使用titles=x|y|z

先发出第一个搜索请求,然后再发出第二个图像请求

【问题讨论】:

  • 您不能同时使用listprop 查询。
  • 那么有没有办法在一个请求中做到这一点?似乎是一个非常标准的查询。

标签: mediawiki wikipedia wikipedia-api mediawiki-api


【解决方案1】:

我尝试过使用 list=search 参数,但它似乎忽略了 prop=images

如果你想检索任何properties,你需要指定一个你想要获取这些的页面列表;例如通过使用titles=pageids=revids= 参数。您没有发送任何内容,因此您没有收到prop=images 的结果。

如果您确实使用了api.php?action=query&list=search&srsearch=test&prop=images&titles=test,您将获得test 的搜索结果Test 页面的图像。

不过,您也可以使用list 查询为您的属性查询生成的集合,将list 模块用作generator。查询看起来像 api.php?action=query&generator=search&gsrsearch=test&gsrnamespace=0&gsrprop=snippet&prop=images。不幸的是,它不会产生列表包含的属性,而只是将 pageid 用于基本属性查询。

使用两个查询可能是要走的路。顺便说一句,我建议使用pageimages property,它可能会给你最好的结果。

【讨论】:

    【解决方案2】:

    正如 Bergi 所建议的,使用生成器是解决问题的方法。具体我会做什么:

    整个查询可能如下所示:

    http://en.wikipedia.org/w/api.php?format=json&action=query&generator=search&gsrnamespace=0&gsrsearch=test&gsrlimit=10&prop=pageimages|extracts&pilimit=max&exintro&explaintext&exsentences=1&exlimit=max

    【讨论】:

    • 谢谢,这也解决了我的一个新要求,给了我一个控制sn-p/extract长度的属性。
    猜你喜欢
    • 2013-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-08
    • 1970-01-01
    • 1970-01-01
    • 2011-06-17
    • 1970-01-01
    相关资源
    最近更新 更多