searchtext plugin

Compatible with DokuWiki

Devel only

plugin 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
Requires
text

Tagged with search

This plugin searches pages rendered as text instead of raw wiki.
This plugin displays search result snippets from text.

:!: This plugin requires:

  1. A text renderer, such as the text plugin
  2. 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 development version of DokuWiki to make this work!

Download

Usage

There are two checkbox configuration items which appear at the bottom of the Admin Configuration Settings:

  1. Search in rendered text
  2. Display search result snippets from rendered text

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.

Other plugins

This plugin requires a text renderer, such as text, available at http://cobs.rollerorgans.com/plugins/text.zip

Discussion

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

plugin/searchtext.txt · Last modified: 2010/10/09 18:56 by gturri
 
Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 3.0 Unported
Imprint Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki
WikiForumIRCBugsGitXRefTranslate