Searches pages rendered as text instead of raw wiki. Displays search result snippets from rendered text.
Compatible with DokuWiki
Searches pages rendered as text instead of raw wiki. Displays search result snippets from rendered 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 Howto recreate the indexes