EPUB-Search can be used to search in EPUB3-Documents.
You can make your whole cloud based epub3-book-collection content based searchable.
EPUB-Search uses search-index to indexing the base content.
###Features included:
- Full text search (get all query matches for one epub-document or for a whole epub collection)
- Instant search (provide suggestions)
- Full javascript
- Hits including cfi references
- Returning result in JSON format
For CLI use
[sudo] npm install epub-full-text-search -g
For library use
$ npm install epub-full-text-search --save
CLI
$ epub-search
Welcome to Epub search service
Usage: epub-search [action] [options]
Actions:
start Start the service
stop Stop the service
status Get the state of the service
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).
$ [sudo] epub-search start
Let´s start to index some epub-documents:
$ epub-search writeToIndex -p <path>
Search at index for some query:
http://localhost:8085/search?q=...
Offering search suggestions
$ http://localhost:8085/matcher?beginsWith=...
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
After that we can get some hits for the query epub
:
Search in the whole indexed ebook-collection:
$ curl -XGET "http://localhost:8085/search?q=math"
Set query filter book title t="..."
to search only within a specific ebook:
$ curl -XGET "http://localhost:8085/search?q=epub&t=Accessible+EPUB+3"
Or we can get some suggestions for autocomplete feature:
$ curl -XGET "http://localhost:8085/matcher?beginsWith=epu"
import epubSearch from 'epub-full-text-search';
const options = {'indexPath': 'path_to_index-DB'}; // an own path can be set optional
epubSearch(options || {})
.then((searchInstance) => {
// INDEXING (write your **unzipped** EPUB3-Document to index)
searchInstance.indexing('your_epub(s)_directory')
.then((info) => {
console.log(info);
})
.fail(function(err) {
console.error(err);
});
// SEARCHING
// search(query, epubTitle)
searchInstance.search('epub', "Accessible EPUB 3")
.then((results) => {
console.log(results);
})
.fail(function(err) {
console.error(err);
});
// COMPLEX SEARCHING
// query(query, epubTitle)
const search = 'epub';
searchInstance.query({
query: [
{
AND: [
{'*': [search]},
{filename: ['accessible_epub_3']}
]
}
]
}, search)
.then((results) => {
console.log(results);
})
.fail(function(err) {
console.error(err);
});
// SEARCH SUGGESTIONS
// match(beginsWith, epubTitle)
searchInstance.match('matrix', 'A First Course in Linear Algebra')
.then((results) => {
console.log(results);
})
.fail(function(err) {
console.error(err);
});
})
.fail(function(err) {
console.error(err);
});
Install all dependent modules: npm install
.
Start up the example npm run express-service
. It should run an express server on your local machine.
When navigating to http://localhost:8080/ then you can see a test page where you can enter a search query.
Note: The indexing process starts automatically and it takes a few seconds until the search service is really available.