aboutsummaryrefslogtreecommitdiff
path: root/docs/_book/gitbook/gitbook-plugin-search/search-engine.js
blob: 50883464e6710a979e8b7d3c8189ac6826c8ae45 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
require([
    'gitbook',
    'jquery'
], function(gitbook, $) {
    // Global search objects
    var engine      = null;
    var initialized = false;

    // Set a new search engine
    function setEngine(Engine, config) {
        initialized = false;
        engine      = new Engine(config);

        init(config);
    }

    // Initialize search engine with config
    function init(config) {
        if (!engine) throw new Error('No engine set for research. Set an engine using gitbook.research.setEngine(Engine).');

        return engine.init(config)
        .then(function() {
            initialized = true;
            gitbook.events.trigger('search.ready');
        });
    }

    // Launch search for query q
    function query(q, offset, length) {
        if (!initialized) throw new Error('Search has not been initialized');
        return engine.search(q, offset, length);
    }

    // Get stats about search
    function getEngine() {
        return engine? engine.name : null;
    }

    function isInitialized() {
        return initialized;
    }

    // Initialize gitbook.search
    gitbook.search = {
        setEngine:     setEngine,
        getEngine:     getEngine,
        query:         query,
        isInitialized: isInitialized
    };
});