var fs = require('fs');
var readline = require('readline');
let client = new Typesense.Client({
'nodes': [{
'host': 'localhost',
'port': '8108',
'protocol': 'http'
}],
'apiKey': '<API_KEY>',
'connectionTimeoutSeconds': 2
})
let booksSchema = {
'name': 'books',
'fields': [
{'name': 'title', 'type': 'string' },
{'name': 'authors', 'type': 'string[]' },
{'name': 'image_url', 'type': 'string' },
{'name': 'publication_year', 'type': 'int32' },
{'name': 'ratings_count', 'type': 'int32' },
{'name': 'average_rating', 'type': 'float' },
{'name': 'authors_facet', 'type': 'string[]', 'facet': true },
{'name': 'publication_year_facet', 'type': 'string', 'facet': true },
],
'default_sorting_field': 'ratings_count'
}
client.collections().create(booksSchema)
.then(function (data) {
console.log(data)
})
readline.createInterface({
input: fs.createReadStream('./books.jsonl'),
terminal: false
}).on('line', function(line) {
let bookDocument = JSON.parse(line);
client.collections('books').documents().create(bookDocument)
});
let searchParameters = {
'q' : 'harry',
'query_by' : 'title',
'sort_by' : 'ratings_count:desc'
}
client.collections('books')
.documents()
.search(searchParameters)
.then(function (searchResults) {
console.log(searchResults)
})