DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:searchtext

This is an old revision of the document!


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
Conflicts with
sqlite
Requires
text

The missing download url means that this extension cannot be installed via the Extension Manager. Please see Publishing a Plugin on dokuwiki.org. Recommended are public repository hosts like GitHub, GitLab or Bitbucket.

Similar to docsearch, elasticsearch

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 _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

The change above does not work properly after all, needs more investigation… It would be great to get this pluging working without modification to the dokuwiki sources. — Hansel Tue Jan 26 08:12:59 UTC 2010

plugin/searchtext.1264490184.txt.gz · Last modified: 2010-01-26 08:16 by 193.173.151.147

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki