2009-04-22 12 views
2

J'ai l'extension de recherche Lucene (http://www.mediawiki.org/wiki/Extension_talk:Lucene-search) intégrée à mon installation mediawiki. Tout fonctionne très bien, cependant, lucene semble avoir indexé tout le balisage mediawiki/html et il apparaît dans les résultats.Mediawiki + Lucene: Comment supprimer un balisage?

-à-dire la recherche de « vert » obtenir des résultats avec balisage tels que, le style = "background: vert, couleur: blanc

est-il un moyen de dépouiller les résultats de la recherche de tout le balisage je crois wikipedia utilisations le même plugin de recherche, comment le font-ils?

Répondre

2

Vous devrez probablement transformer le balisage wiki brut avant de l'indexer avec Lucene.Pour traiter du contenu XML pur, il est possible d'utiliser simplement une transformation XSL avec <xsl:value-of select="text()"/> pour extraire le contenu du texte

Je crains que cela ne fonctionne pas pour le balisage wiki , mais peut-être que vous pouvez capturer la transformation post-HTML de la page?

0

J'ai trouvé une solution à une partie du problème. La modification suivante supprimera le balisage HTML des résultats de la recherche. Je n'ai pas encore réussi à supprimer le balisage Wikitext. Tous les conseils sur ce serait apprécié. Notez que je n'utilise pas l'extension de recherche Lucene.

  • Ouvrir /includes/search/SearchEngine.php
  • Dans ce fichier, il y a une classe définie - SearchResult
  • SearchResult.getTextSnippet() contient le code pour formater les résultats de recherche
  • SearchResult- > mText contient le texte de présentation du texte à partir des résultats de recherche Pour résoudre le problème, il suffit d'aller dans SearchEngine.php et trouver la méthode appelée getTextSnippet(), puis ajoutez la ligne suivante avant le « si »:

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

J'ai trouvé cette solution sur ce Wiki aléatoire: http://www.myrandomwiki.com/wiki/MediaWiki_Notes#Strip_HTML_From_Search_Results