Extended Search

bugs:173
Author: Your Name (Your Backtracker Handle, use ::::)



1. Introduction


Introduction of idea


[Sort by] [Filter]

2. Implementation Notes

  • Some notes

  • search on the word
  • search on the current branch and its descendants (as the page WackoWiki represent a tree structure)
  • search with the selection (such as "+ window-windows" to find a page containing floor window but does not contain the word windows)
  • search highlighting
  • more suggestions

Database Changes

  • Required database changes to wacko_xyz_table

Configuration

  • $_var indicates something

Data used
Basic

  1. page title
  2. page name (tag)
  3. page name (if got different menu name)
  4. page description (if set manually)
  5. page keywords (if set manually)
  6. PAGE CONTENT
  7. anchor text from the links linking to this page form other pages in our system
  8. taggings (not yet implemeted)

Scope

  1. page
  2. comment
  3. file

Relevance

  1. time
  2. revisions
  3. user
  4. some magic factors
  5. page language
  6. watchers
  7. links
  8. backlinks
  9. views
  10. authors
  11. categories
  12. size
  13. files

Filter

  1. exclude system (owner) pages
  2. include comments
  3. include files
  4. lang
  5. cluster
  6. categories

Results [pages, comments, files]

  1. title
  2. tag
  3. categories
  4. body
  5. last editor
  6. owner
  7. last modified
  8. created
  9. page / comment
  10. cluster
  11. user / system page
  12. attached / linked files (count)
  13. language
  14. comments (count)
  15. categories
  16. revisions (count)

Preview (teaser)

2.1. Limits

URL length: 256 bytes limit on some browsers


  1. How to pass an array within a query string?

JSON method

 $array = array(2, 46, 34, 'text');
$serialized = json_encode($array)
$data = 'array=' . rawurlencode($serialized);
// Send to page via cURL, header() or other service.	

code for receiving page:

 $array = json_decode($_GET['array']); 
// Or $_POST['array'] if a post request.	

Implementation Log

3. Other Changes

4. Related Links

  1. https://archive.org/search.php?query=Ward Cunningham - example for faceted search
  2. http://www.uxmatters.com/mt/ar[...]d-search-filters.php
  3. https://ux.stackexchange.com/q[...]ing-links-vs-checkbo
  4. https://www.mullie.eu/mysql-as-a-search-engine/

MariaDb/MySql

  1. https://dev.mysql.com/doc/refm[...]ulltext-boolean.html
  2. https://dev.mysql.com/doc/refm[...]xt-restrictions.html
  3. https://dev.mysql.com/doc/refm[...]ltext-stopwords.html

5. Future Ideas

  1. Faceted navigation index tables
    1. One table contains a list of the object facets and the other contains facts about the objects.
    2. <?php
      /**
       * Populates the object_facts table with data from the objects table
       */
      function populate_object_facts()
      {
        //empty object_facts table
        $this->sql_query ("TRUNCATE objects_facts");  
       
        //fetch all object data
        $result = $this->load_all ("SELECT * FROM objects");
       
          //loop through table columns
          foreach ($result as $key => $value)
          {
            //create facts for all object fields except 'id' and 'name'
            if ($key != "id" && $key != "name")
            {
              $sql = "INSERT INTO objects_facts VALUES (" . $row['id'] . ",$facet_id,'$key','$value');";
              $this->sql_query ($sql);
              $facet_id++;
      
              echo "Added fact: (".$row['id'].", $facet_id, $key, $value) <br/>";
            }
          }
      }

6. Feedback

  • Please provide feedback

Show Files (4 files)

Read comment (1 comment)