larsvoigt / epub-full-text-search

Search engine for digital publication based on EPUB 3
MIT License
50 stars 10 forks source link
cloud epub epub-reader epub-search epub3 epub3-documents full-text-search fulltext-search reader search-engine

EPUB-Search Build Status NPM version

Search engine for digital publication based on EPUB 3

Welcome! EPUB-Search makes your digital publications searchable.

What is the use case:

Online Demo

Demo

Features included:

Installation

For CLI use

[sudo] npm install epub-full-text-search -g

For library use

$ npm install epub-full-text-search --save

Running as a Service

CLI

$ epub-search 

Welcome to Epub search service

Usage: epub-search [action] [options]

Actions:
        start           Start the service
        stop            Stop the service
        logs            Show logs
        writeToIndex    Epub-book(s) which should be written to index.(Hint: the epub content have to be unzipped)

Options:
        -p      Path to epub folder which contains epub-book(s).

Start Service

$ [sudo] epub-search start

Modus operandi

EPUB search provides two modus operandi:

Indexing On-the-fly

Indexing
http://localhost:8085/addToIndex?url=${epub}/&uuid=${uuid}
Search
http://localhost:8085/search?q=${term}&uuid=${uuid}
Delete index
http://localhost:8085/deleteFromIndex?&uuid=${uuid}

Pre-Indexing

Indexing

Let´s start to index some EPUBs:

$ epub-search writeToIndex -p  <path>
Search

Search for term:

http://localhost:8085/search?q=${term}&t=${EPUB-title};
Suggestions for Autocomplete
$  http://localhost:8085/matcher?beginsWith=beginning-of-the-text-to-match

Examples:

Indexing On-the-fly

TODO

Pre-indexing

At first, please install epub-search globally:

[sudo] npm install epub-full-text-search -g

Start service:

$ [sudo] epub-search start

Add sample epubs to index:

epub-search writeToIndex -p {prefix}/node_modules/epub-full-text-search/node_modules/epub3-samples

Now we should get some hits for the term epub:

For requests you can use $ curl -XGET "http://localhost:8085/search?q=math" or the browser...

Search within the whole ebook-collection:

http://localhost:8085/search?q=math

Set the filter for the book-title t="..." to search only within a specific ebook:

http://localhost:8085/search?q=epub&t=Accessible+EPUB+3

Or we can get some suggestions for an autocomplete:

http://localhost:8085/matcher?beginsWith=epu

For library use

TODO

Hit data format

TODO

Local testing

Install all dependent modules: npm install.

Start up the demo npm run start. It should run an express server on your local machine.

When you are navigating to http://localhost:8085/ you can see the demo?.

Note: The pre-indexing process starts automatically and it takes a few seconds until the pre-indexing search is available.

Technical Details

EPUB-Search uses search-index to indexing book content.

Contributing

Very welcome ... :-)