README
Uttori Search Provider - Lunr
Uttori Search Provider powered by Lunr.js.
Install
npm install --save uttori-search-provider-lunr
API Reference
SearchProvider
Uttori Search Provider powered by Lunr.js.
Kind: global class
Properties
Name | Type | Description |
---|---|---|
searchTerms | Object |
The collection of search terms and their counts. |
index | Object |
The Lunr instance. |
- SearchProvider
- new SearchProvider([config])
- .setup([config])
- .search(query, [limit]) ⇒
Array.<Object>
- .internalSearch(query, [limit]) ⇒
Array.<Object>
℗ - .indexAdd([documents])
- .indexUpdate([documents])
- .indexRemove([documents])
- .updateTermCount(query)
- .getPopularSearchTerms([limit]) ⇒
Array.<string>
- .shouldAugment([query], [fields]) ⇒
boolean
new SearchProvider([config])
Creates an instance of SearchProvider.
Param | Type | Default | Description |
---|---|---|---|
[config] | Object |
{} |
Configuration object for the class. |
[config.lunr_locales] | Array.<string> |
[] |
A list of locales to add support for from lunr-languages. |
Example (Init SearchProvider)
const searchProvider = new SearchProvider();
const searchProvider = new SearchProvider({ lunr_locales: ['de', 'fr', 'jp'] });
searchProvider.setup([config])
Setup the search provider by building an index of documents.
Kind: instance method of SearchProvider
Param | Type | Default | Description |
---|---|---|---|
[config] | Object |
{} |
Configuration object for setup. |
[config.documents] | Array.<UttoriDocument> |
[] |
An array of documents to be indexed. |
Example
searchProvider.setup({ documents: [{ slug: 'intro', title: 'Intro', content: '...', tags: ['intro'] }] });
Array.<Object>
searchProvider.search(query, [limit]) ⇒ External method for searching documents matching the provided query and updates the count for the query used.
Uses the internalSearch
method internally.
Kind: instance method of SearchProvider
Returns: Array.<Object>
- - Returns an array of search results no longer than limit.
Param | Type | Default | Description |
---|---|---|---|
query | string |
The value to search for. | |
[limit] | number |
100 |
Limit for the number of returned documents. |
Example
searchProvider.search('matching');
➜ [{ ref: 'first-matching-document', ... }, { ref: 'another-matching-document', ... }, ...]
Array.<Object>
℗
searchProvider.internalSearch(query, [limit]) ⇒ Searches for documents matching the provided query with Lunr.
Kind: instance method of SearchProvider
Returns: Array.<Object>
- - Returns an array of search results no longer than limit.
Access: private
Param | Type | Default | Description |
---|---|---|---|
query | string |
The value to search for. | |
[limit] | number |
100 |
Limit for the number of returned documents. |
searchProvider.indexAdd([documents])
Unused: Adds documents to the index.
Kind: instance method of SearchProvider
Param | Type | Default | Description |
---|---|---|---|
[documents] | Array.<UttoriDocument> |
[] |
An array of documents to be indexed. |
searchProvider.indexUpdate([documents])
Unused: Updates documents in the index.
Kind: instance method of SearchProvider
Param | Type | Default | Description |
---|---|---|---|
[documents] | Array.<UttoriDocument> |
[] |
An array of documents to be indexed. |
searchProvider.indexRemove([documents])
Unused: Removes documents from the index.
Kind: instance method of SearchProvider
Param | Type | Default | Description |
---|---|---|---|
[documents] | Array.<UttoriDocument> |
[] |
An array of documents to be indexed. |
searchProvider.updateTermCount(query)
Updates the search query in the query counts.
Kind: instance method of SearchProvider
Param | Type | Description |
---|---|---|
query | string |
The query to increment. |
Array.<string>
searchProvider.getPopularSearchTerms([limit]) ⇒ Returns the most popular search terms.
Kind: instance method of SearchProvider
Returns: Array.<string>
- - Returns an array of search results no longer than limit.
Param | Type | Default | Description |
---|---|---|---|
[limit] | number |
10 |
Limit for the number of returned popular searches. |
Example
searchProvider.getPopularSearchTerms();
➜ ['popular', 'cool', 'helpful']
boolean
searchProvider.shouldAugment([query], [fields]) ⇒ Determines if a given search query needs to have fields augmented.
Kind: instance method of SearchProvider
Returns: boolean
- - Returns true. Lunr does not return all of the required fields for displaing search results.
Param | Type | Description |
---|---|---|
[query] | string |
Unused: the query to check for augmentation. |
[fields] | Array.<string> |
Unused: the fields required to be on the documents. |
Tests
To run the test suite, first install the dependencies, then run npm test
:
npm install
npm test
DEBUG=Uttori* npm test