====== searchtext plugin ====== ---- plugin ---- description: Searches pages rendered as text instead of raw wiki. Displays search result snippets from rendered text. author : Todd Augsburger email : todd@rollerorgans.com type : action, render lastupdate : 2008-02-28 compatible : devel >2008-02-28, with modification depends : text conflicts : similar : tags : search ---- This plugin searches pages rendered as text instead of raw wiki.\\ This plugin displays search result snippets from text. :!: This plugin **requires**: -A text renderer, such as the [[plugin:text]] plugin -A slight modification to add a FULLTEXT_SNIPPET_GETTEXT event to inc/fulltext.php if you wish to use the snippet capability //(see below)// :!: You will need a recent [[devel:develonly|development version]] of DokuWiki to make this work! ===== Download ===== * [[http://cobs.rollerorgans.com/plugins/searchtext.zip]] -- 2008-02-29, metadata bug fix, simplified event * 2008-02-28, initial upload ===== Usage ===== There are two checkbox configuration items which appear at the bottom of the **Admin Configuration Settings**: -Search in rendered text -Display search result snippets from rendered text You __must__ edit the function [[xref>ft_snippet()]] in **../inc/fulltext.php** in order to provide a FULLTEXT_SNIPPET_GETTEXT event if you wish to use the snippet capability. A sample darcs patch would be: [Allow plugin to insert search snippet text Todd Augsburger **20080227000001 FULLTEXT_SNIPPET_GETTEXT Allow plugin to insert search snippet text ] { hunk ./inc/fulltext.php 254 - $text = rawWiki($id); + $text = trigger_event('FULLTEXT_SNIPPET_GETTEXT', $id, 'rawWiki'); } Actual row in code may vary, for //DokuWiki 2009-02-14// it's row 289. ===== Other plugins ===== This plugin requires a text renderer, such as [[plugin:text]], available at http://cobs.rollerorgans.com/plugins/text.zip ===== Discussion ===== The [[devel:develonly]] version already has a similar event, so then it's better to patch the plugin. Replace function register(&$controller) { $controller->register_hook('INDEXER_PAGE_ADD', 'BEFORE', $this, '_getSearch'); $controller->register_hook('FULLTEXT_SNIPPET_GETTEXT', 'BEFORE', $this, '_getSnippet'); } . . . function _getSnippet(&$event, $param) { if($this->getConf('snippet_in_text')) { global $ID; $prevID = $ID; $ID = $event->data; $event->result = p_cached_output(wikiFN($event->data),'text'); $ID = $prevID; $event->preventDefault(); } } with function register(&$controller) { $controller->register_hook('INDEXER_PAGE_ADD', 'BEFORE', $this, '_getSearch'); $controller->register_hook('FULLTEXT_SNIPPET_CREATE', 'BEFORE', $this, '_getSnippet'); } . . . function _getSnippet(&$event, $param) { if($this->getConf('snippet_in_text')) { global $ID; $prevID = $ID; $ID = $event->data['id']; $event->result = p_cached_output(wikiFN($event->data['id']),'text'); $ID = $prevID; $event->preventDefault(); } } --- //[[hakan.sandell@home.se|HÃ¥kanS]] 2009/10/30 17:49// The latest DokuWiki (DokuWiki-2009-12-25c) works unmodified with the following _getSnippet(): function register(&$controller) { $controller->register_hook('INDEXER_PAGE_ADD', 'BEFORE', $this, '_getSearch'); $controller->register_hook('FULLTEXT_SNIPPET_CREATE', 'BEFORE', $this, '_getSnippet'); } function _getSnippet(&$event, $param) { if($this->getConf('snippet_in_text')) { global $ID; $prevID = $ID; $ID = $event->data['id']; $event->data['text'] = p_cached_output(wikiFN($event->data['id']),'text'); $ID = $prevID; } } --- //[[hans@hpelbers.org|Hansel]] Mon Jan 25 11:09:18 CET 2010// To make the modification above work properly you have to delete the old index and metadata: in /data sudo rm -rf cache/* meta/* index/* --- //[[hans@hpelbers.org|Hansel]] Tue Jan 26 08:12:59 UTC 2010// [[cli|Howto recreate the indexes]]