我正在开发一个基于维基媒体的维基搜索引擎。
事实上,这是我的问题:
/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;
对我来说很好。