维基媒体API搜索功能的问题

时间:2013-12-05 09:04:24

标签: php xml search wikipedia-api mediawiki-api

我正在开发基于维基媒体的wiki搜索引擎。

实际上,这是我的问题:

/external/wikiPublic/api.php?action=query&list=search&srsearch=".$search."&srprop=snippet&format=xml

效果很好,但结果非常糟糕。 例如,它返回如下的重定向:

<p ns="0" title="Imprimantes" snippet="#REDIRECTION [[<span class='searchmatch'>Imprimantes</span> Enseignement]] "/>

它尝试将参数&amp; redirects = 0添加到URL但它不起作用,它仍然显示这种结果。 正如您所看到的,它还将wikimedia语法放在代码段中。它有时很糟糕,就像这个:

<p ns="0" title="Wifi" snippet="== Le <span class='searchmatch'>Wifi</span> ici == [[Fichier:Wi-Fi_Logo.png|right|250px|Logo <span class='searchmatch'>Wifi</span>]] "/>

我还尝试将代码段更改为sectionsnippet但它不起作用,它在sectionsnippet XML属性中没有返回任何内容

那么,你知道如何解决这些问题吗?

  • 防止搜索结果中的重定向
  • 删除维基媒体语法或返回“纯文本”或只返回匹配的选择...我不知道哪一个是最好的
  • 显示部分字词的结果;像“imprimante”返回包含“imprimantes”的页面

2 个答案:

答案 0 :(得分:1)

MediaWiki search API返回的代码段由搜索后端MediaWiki configured生成。

默认情况下,这是内置的数据库搜索,它确实返回未解析的片段。要获得更好的解析代码段,您需要安装自定义search extension,例如维基百科和其他维基媒体wiki使用的基于Lucene的MWSearch

答案 1 :(得分:0)

您是否尝试过简单的file_get_contents电话?

$phrase = 'World War';

$search = str_replace( ' ', '+', $phrase );
$search_string = 'http://en.wikipedia.org/wiki/Special:Search?go=Go&search=' . $search;
$result = file_get_contents( $search_string );

echo $result;

对我来说很好。