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


Issues with Wikimedia API search function

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

事实上,这是我的问题:

/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]] "/>

它试图添加参数&重定向=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,但它不起作用,它在sectionsnsnippet XML属性中没有返回任何内容

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

  • 阻止在搜索结果中重定向
  • 删除wikimedia语法或返回"纯文本"或仅返回匹配的选择。。。我不知道哪一个最好
  • 显示部分条款的结果;像"impimante"返回包含"impimants"的页面

MediaWiki搜索API返回的代码段由搜索后端生成。MediaWiki配置为使用。

默认情况下,这是内置的数据库搜索,它确实会返回未分析的片段。为了获得更好的解析片段,你需要安装一个自定义的搜索扩展,比如维基百科和其他维基媒体维基使用的基于Lucene的MWSearch。

您尝试过简单的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;

对我来说很好。