我想在维基百科的api中加入我自己的搜索栏。给定用户输入的字符串,它应该返回wikipedia页面中与该搜索字符串最匹配的第一部分。
如果输入的标题恰好是正确的页面,它就可以很好地工作,但是如果有打字错误或类似错误,它会返回一个没有内容的xml文件。
这是我用来查询的url:http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=0&titles=TITLE_GOES_HERE&format=xml
一个例子是查找关于土木工程的页面。(http://en.wikipedia.org/wiki/Civil_engineering)
如果我在维基百科上搜索土木工程,我会发现它没有问题。如果我用我的url搜索它也是一样的:http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=0&titles=civil+engineering&format=xml
然后,如果我在维基百科上错误地将我的搜索字符串输入为“civil my”,它会显示“没有与之匹配的页面--您是指'civil engineering‘吗?”我可以点击它转到正确的页面。(http://en.wikipedia.org/w/index.php?search=civul+engineering&title=Special%3ASearch&go=Go)
但是,如果我在查询url中犯了同样的错误,它将返回以下xml:
<api>
<query>
<normalized>
<n from="civul engineering" to="Civul engineering"/>
</normalized>
<pages>
<page ns="0" title="Civul engineering" missing=""/>
</pages>
</query>
</api>没有建议的重定向或任何东西。如何拉取最接近的结果,而不是只拉出与字符串完全匹配的结果?
发布于 2014-06-12 21:38:41
不要使用需要现有title的revisions api,而要使用search query api甚至opensearch api。
https://stackoverflow.com/questions/24185009
复制相似问题