searchtext plugin by Todd Augsburger
Searches pages rendered as text instead of raw wiki. Displays search result snippets from rendered text.
Last updated on 2008-02-28. Provides Action, Render.
Compatible with DokuWiki devel >2008-02-28, with modification.
Requires text.
This plugin searches pages rendered as text instead of raw wiki.
This plugin displays search result snippets from text.
This plugin requires:
You will need a recent development version of DokuWiki to make this work!
There are two checkbox configuration items which appear at the bottom of the Admin Configuration Settings:
You must edit the function 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 <todd@rollerorgans.com>**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.
This plugin requires a text renderer, such as text, available at http://cobs.rollerorgans.com/plugins/text.zip
The 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(); } }
— 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; } }
— 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 <dokukiki>/data
sudo rm -rf cache/* meta/* index/*
— Hansel Tue Jan 26 08:12:59 UTC 2010