MediaWiki返回与查询字符串的最佳匹配

时间:2014-06-12 12:56:53

标签: mediawiki wikipedia wikipedia-api mediawiki-api

我想基本上将自己的搜索栏构建到维基百科的api中。给定用户输入的字符串,它应返回维基百科页面中与该搜索字符串最匹配的第一部分。

如果输入的标题恰好是正确的页面,它可以正常工作,但如果有拼写错误或相似的情况,它会返回一个没有内容的xml文件。

这是我用来查询的网址: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

如果我在维基百科上搜索土木工程,我发现没问题。如果我用我的网址搜索它,同样的事情:http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&rvsection=0&titles=civil+engineering&format=xml

然后,如果我将我的搜索字符串输错到,例如" civul engineering"在维基百科上,它说"没有页面匹配 - 你是说'土木工程&#39 ;? "我可以点击进入正确的页面。 (http://en.wikipedia.org/w/index.php?search=civul+engineering&title=Special%3ASearch&go=Go

但是,如果我在查询网址中犯了同样的错误,它会返回以下xml:

<api>
    <query>
        <normalized>
            <n from="civul engineering" to="Civul engineering"/>
       </normalized>
       <pages>
            <page ns="0" title="Civul engineering" missing=""/>
       </pages>
    </query>
</api>

没有建议的重定向或任何内容。如何提取最接近的结果而不仅仅是与字符串完全匹配的结果?

1 个答案:

答案 0 :(得分:3)

请勿使用期望现有revisions的{​​{1}} api,但请使用search query api甚至opensearch api