searchtext plugin

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.

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

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