Last active
November 23, 2016 14:12
-
-
Save craigshoemaker/aeab77f87ced020f8d930611edabc5e2 to your computer and use it in GitHub Desktop.
Proof of concept working with search-index
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const si = require('search-index'); | |
const stream = require('stream'); | |
const topics = [ | |
`Title for File 1 \n A long time ago, in a galaxy far far way...`, | |
`Title for File 2 \n Once upon a time there was a beautiful princess...`, | |
`Title for File 3 \n It was the best of times, it was the worst of times...`, | |
`Title for File 4 \n There once was a Prince and a frog...`, | |
`Title for File 5 \n In a galaxy with princes, princesses, frogs and times, we at chocolate.` | |
]; | |
let options = { | |
indexPath: '_db/topics', | |
logLevel: 'error' | |
}; | |
const seedDatabase = (err, index, callback) => { | |
if(err) console.log(err); | |
const Readable = stream.Readable; | |
const readStream = new Readable({ objectMode: true }); | |
topics.forEach((topicBody, i) => { | |
readStream.push({ | |
id: `topic-${i+1}`, | |
body: topicBody | |
}); | |
}); | |
readStream.push(null); | |
readStream.pipe(index.defaultPipeline()) | |
.pipe(index.add()) | |
.on('data', data => console.log(data)) | |
.on('end', () => { | |
console.log('All files are indexed'); | |
callback(); | |
}); | |
}; | |
const search = (index, query) => { | |
console.log(`searching for: ${JSON.stringify(query)}`); | |
index.search(query) | |
.on('data', data => console.log(data)) | |
.on('end', () => console.log('search is complete')); | |
}; | |
si(options, (err, index) => { | |
if(err) console.log(err); | |
seedDatabase(err, index, () => { | |
if(err) console.log(err); | |
const queryContainer = { | |
query: [ | |
{ AND: { 'body': ['time'] } }, | |
{ AND: { 'body': ['beautiful'] } }, | |
] | |
}; | |
search(index, queryContainer); | |
}); | |
}); | |
/* ******* Begin Results ********** | |
All files are indexed | |
searching for: {"query":[{"AND":{"body":["time"]}},{"AND":{"body":["beautiful"]}}]} | |
{ id: 'topic-2', | |
scoringCriteria: | |
[ { tf: [Object], | |
df: [Object], | |
tfidf: [Object], | |
boost: 0, | |
score: 0.7359535705891886 } ], | |
score: 0.7359535705891886, | |
document: | |
{ id: 'topic-2', | |
body: 'Title for File 2 \n Once upon a time there was a beautiful princess...' } } | |
{ id: 'topic-1', | |
scoringCriteria: | |
[ { tf: [Object], | |
df: [Object], | |
tfidf: [Object], | |
boost: 0, | |
score: 0.7359535705891886 } ], | |
score: 0.7359535705891886, | |
document: | |
{ id: 'topic-1', | |
body: 'Title for File 1 \n A long time ago, in a galaxy far far way...' } } | |
search is complete | |
******* End Results ********** */ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment