Mediawiki + Lucene:如何剥离标记?

时间:2009-04-22 16:42:20

标签: lucene mediawiki markup

我将Lucene搜索扩展程序(http://www.mediawiki.org/wiki/Extension_talk:Lucene-search)与我的mediawiki安装集成在一起。然而,lucene似乎已经将所有的mediawiki / html标记编入索引,并且它显示在结果中。

即。搜索“绿色”将返回带有标记的结果,例如,style =“background:green; color:white

有没有办法去除所有标记的搜索结果?我相信维基百科使用相同的搜索插件,他们是如何做到的?

2 个答案:

答案 0 :(得分:2)

在使用Lucene索引之前,您可能需要转换原始wiki标记。处理纯XML内容时,可以使用带有<xsl:value-of select="text()"/>的XSL转换来提取文本内容。

我担心这对wiki标记不起作用,但也许你可以在HTML转换后捕获页面?

答案 1 :(得分:0)

我找到了部分问题的解决方案。以下更改将从搜索结果中删除HTML标记。我还没能删除Wikitext标记。任何提示都将不胜感激。请注意,我不使用Lucene搜索扩展名。

  • 打开/includes/search/SearchEngine.php
  • 在该文件中,定义了一个类 - SearchResult
  • SearchResult.getTextSnippet()包含格式化搜索结果的代码
  • SearchResult-&gt; mText包含搜索结果中的文字blurb 要解决这个问题,只需进入SearchEngine.php并找到名为getTextSnippet()的方法,然后在“if”之前添加以下行:

$ this-&gt; mText = strip_tags($ this-&gt; mText);

我在这个随机的Wiki上找到了这个解决方案:http://www.myrandomwiki.com/wiki/MediaWiki_Notes#Strip_HTML_From_Search_Results