Javascript 获取维基百科上包含特定单词的所有页面标题

Javascript 获取维基百科上包含特定单词的所有页面标题,javascript,mediawiki,sparql,wikipedia,dbpedia,Javascript,Mediawiki,Sparql,Wikipedia,Dbpedia,我正在使用HTML和JavaScript编写。对于要维基化的文本中的每个单词,我需要获得包含该单词的页面列表(这样,如果找到匹配的短语,文本中的短语可以自动维基化)。有没有办法使用Wikipedia的API或web服务获取包含特定单词的所有Wikipedia页面的列表 function getMatchingPageTitles(theString){ //get a list of all matching page titles for a specific string, usin

我正在使用HTML和JavaScript编写。对于要维基化的文本中的每个单词,我需要获得包含该单词的页面列表(这样,如果找到匹配的短语,文本中的短语可以自动维基化)。有没有办法使用Wikipedia的API或web服务获取包含特定单词的所有Wikipedia页面的列表

function getMatchingPageTitles(theString){
    //get a list of all matching page titles for a specific string, using one of Wikipedia's APIs or web services
}
。(维基百科上有关于所有常用词的文章,我不认为链接到它们会有任何用处。)

但是,如果你真的想做这样的事情,我认为更好的方法是从你的输入文本中找出哪些单词有文章

例如,对于字符串
我正在编写一个“自动wikifier”工具
,您的查询可能类似于:

答案是:

<api>
  <query>
    <normalized>
      <n from="am" to="Am" />
      <n from="writing" to="Writing" />
      <n from="an" to="An" />
      <n from="auto-wikifier" to="Auto-wikifier" />
      <n from="tool" to="Tool" />
    </normalized>
    <pages>
      <page ns="0" title="Auto-wikifier" missing="" />
      <page pageid="2513432" ns="0" title="Am" />
      <page pageid="2513422" ns="0" title="An" />
      <page pageid="25346998" ns="0" title="I" />
      <page pageid="30677" ns="0" title="Tool" />
      <page pageid="32977" ns="0" title="Writing" />
    </pages>
  </query>
</api>

几点注意:

  • 结果不符合您指定的顺序
  • 如果页面不存在,则结果具有
    missing=”“
    属性
  • JSON和JSONP格式也可用,这可能更适合JavaScript
  • titles
    参数对每个查询的限制为50

    • 这是一个有趣的开始。不幸的是,

      维基百科还是MediaWiki?这是一个巨大的不同。例如wikipedia.org或MediaWiki的一些自定义安装。@FritsvanCampen我只关心从中获取页面标题。大约有400多万篇wikipedia文章;我不相信浏览器不会崩溃。杀伤力过大?不,这也不过分。如果试图使用API和javascript获取400万条维基百科条目,那就太过分了。你为什么不解释一下你真正想要实现的目标呢?也许有更好的方法可以解决这个问题。问题是“所有页面标题”,这意味着所有2900万页,而不仅仅是400万篇文章。+1对于一个解决方案,它不涉及用一堆毫无意义的流量轰炸一个非营利网站。有没有办法找到所有包含某个词的标题的页面(而不是该词的精确匹配)?您可以尝试类似的方法,但这意味着每个单词都有一个查询。@斯维克您提出了一个很好的观点:将维基百科上有文章的每个单词都维基化是没有用的。相反,最好获取输入中包含的页面标题列表,然后询问用户是否要对每个标题进行维基化(标题按降序进行维基化)。这将避免全自动wikification的固有冗余,因为它允许用户选择特定短语进行wikify。我注意到每个查询的结果限制为50个。有没有办法获取所有包含特定单词的页面标题和重定向页面(而不是仅50个)?是否可以搜索整个单词的匹配项?(我注意到所有包含
      Kre
      ,而不仅仅是
      Kre
      的页面都显示为一个单词。是否可以只显示整个单词的结果?)我认为您的问题实际上是在PHP查询中围绕Kre添加空格。注意:我也刚刚开始挖掘mediawiki API。我想将查询限制在500以内是一个普遍的策略,所以我将转向dbpedia和sparql查询。我在
      Kre
      周围添加了空格,我仍然得到类似
      Kreamer
      Kreacher
      的结果。如果结果只包含
      Kre
      作为一个孤立的单词,那就更好了。孤立空间似乎会自动被丢弃,我在以前的案例中已经注意到这种行为。在线搜索或打开有关此空间问题的SO问题。