Giter VIP home page Giter VIP logo

poindexter's Introduction

Search engine for your static site.

Powered by FlexSearch



Poindexter scans a folder for HTML files and indexes each file's content by its relative filename. The full index is output to poindexter.bundle.js, which can be imported and searched with poindexter or flexsearch.

Getting started

Create a searchable index

npx poindexter [HTML folder] -o [output path]

Searching with Poindexter

  import { client } from "poindexter/runtime";  

  // loads the poindexter.bundle.json.
  // for custom path: `client.init({ path: '/path/to/poindexter.bundle.js' })`
  client.init()

  // search the index.
  client.index.search(query)

Narrowing the indexable area

To avoid indexing navbars and widgets, Poindexter provide the following options.

contentSelectors An array of selectors. Poindexter tries each selector untill a match is found. Only the content of the first match is indexed. If no match is found, the page is skipped.

IgnoreSelectors An array of selectors. Poindexter removes any elements matching these selectors.

Please refer to the scrape function for more info. Alternatively you can use your own scrape function.

Options

Please refer to the defaults for now.

Configuration

Thanks to Configent Poindexter can be configured here

  • poindexter.config.js
  • package.json (create a poindexter field)
  • environment
  • .env
  • command line
  • API

Title, description and keywords

Poindexter assumes that title, meta description and meta keywords are available in your HTML. Please refer to defaults If this is not the case, you can create your own resolvers.

Custom resolvers

{
  title: $ => 'my website',
  description: $ => $('.description') || 'no description',
  keywords: $ => $('meta[name=keywords]').attr('content').split(',')
}

FAQ

Can I use Poindexter with a SPA?

Poindexter requires a static site. If you have a SPA, have a look at Spank.

Where can I use Poindexter?

Poindexter can be served from the client, your own backend or a serverless function.

How big are the index bundles?

A site like routify.dev with 65 pages, generates a 65 kb bundle after brotli compression.


Example

Routify dev build

poindexter's People

Contributors

jakobrosenberg avatar

Stargazers

Oleksa Koba avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.