====== 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]]