JavaScript based search engine for static websites
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Stefan Naumann 522f1d7f7b typo 1 month ago
src renamed a few variables 2 months ago
LICENSE Initial commit 2 months ago typo 1 month ago


Work in Progress:

  • Needs cleanup
  • Add minimal example
  • either update pelican plugin tipue_search or the output-function must return to a rudimentary one.

JavaScript-based search engine for static websites

tpsearch is a fork of Tipue Search, a JavaScript-based search engine. tpsearch allows searching over an array of pages or articles for search words. For example the static website generator pelican has a plugin (tipue_search), which emits a compatible JSON-object for use with tpsearch.

At the moment, tpsearch assumes, that an object named tipue_search exists, which contains all the article-information (e.g. generated by the pelican plugin tipue_search or similar plugins). The object is assumed to be of this scheme (newlines are ignored):

var tipuesearch = { 
    "pages": [
        { "title": ... },
        { ... }, 


A decently recent JavaScript engine would do. No additional libraries are needed.

Minimal Example

A minimal working example will be added to the repository in the future. But here a very short set-up:

You HTML will need the following:

  • include the JavaScript files
  • a search box
  • an area, where the search results are shown
  <!-- ... -->
  <!-- the content file, listing all your content, eg. from the plugin 'tipue_search' -->
  <script src="/tipuesearch_content.js"></script>
  <!-- the set-file contains strings, you may want to look into that to translate it to your language 
       or add stop words, related words, user defined weighting for words,... -->
  <script src="/static/js/tpearch_set.js"></script>
  <!-- this is the file containing the magic -->
  <script src="/static/js/tpsearch.js"></script>
  var tp = null;
  // create new tpsearch-Object when the document has loaded
  // this will initialise everything (i.e. it sets keyup-handlers, etc)
  window.onload = function () {
      tp = new tpsearch ( {
          'show': 10,               // show 10 results per page
          'descriptiveWords': 75,   // show 75 words per result
          'newWindow': false,       // don't open a new page, when one clicks on a result
          'minimumLength': 1,       // minimal length of the input to start tpsearch (default: 3)
          'searchBox': '#tp_search_input',  // used for document.querySelector to find the search box
          'outputBox': '#tp_search_results', // used for document.querySelector to find the results box
  <input type="text" name="q" id="tp_search_input">
  <div id="tp_search_results"></div>