Mediawiki + Lucene: как убрать разметку?

У меня есть поисковое расширение Lucene (http://www.mediawiki.org/wiki/Extension_talk:Lucene-search), интегрированный с моей установкой mediawiki. Однако все работает очень хорошо — Lucene, похоже, проиндексировала всю разметку mediawiki/html, и это отображается в результатах.

т. е. поиск «зеленого» вернет результаты с разметкой, например, style = «background: green; color: white».

Есть ли способ очистить результаты поиска от всей разметки? Я полагаю, что Википедия использует тот же поисковый плагин, как они это делают?


person Community    schedule 22.04.2009    source источник


Ответы (2)


Вам, вероятно, придется преобразовать необработанную вики-разметку, прежде чем индексировать ее с помощью Lucene. При работе с чистым содержимым XML можно просто использовать преобразование XSL с <xsl:value-of select="text()"/> для извлечения текстового содержимого.

Боюсь, это не сработает для вики-разметки, но, может быть, вы сможете зафиксировать преобразование страницы после HTML?

person cbeer    schedule 23.04.2009

Я нашел решение части проблемы. Следующее изменение удалит HTML-разметку из результатов поиска. Мне пока не удалось удалить разметку Викитекста. Любые советы по этому поводу будут оценены. Обратите внимание, что я не использую поисковое расширение Lucene.

  • Откройте файл /includes/search/SearchEngine.php.
  • В этом файле определен класс - SearchResult
  • SearchResult.getTextSnippet() содержит код для форматирования результатов поиска.
  • SearchResult->mText содержит текстовую аннотацию из результатов поиска. Чтобы устранить проблему, просто зайдите в SearchEngine.php и найдите метод getTextSnippet(), а затем добавьте следующую строку перед «if»:

$this->mText = strip_tags($this->mText);

Я нашел это решение на этой случайной вики: http://www.myrandomwiki.com/wiki/MediaWiki_Notes#Strip_HTML_From_Search_Results

person Mike D    schedule 15.11.2013