foxql-index
inverted index database system simple implementation for foxql. this project is only use term freq.
Foxql p2p search engine project repo
Documentation
Install npm
npm i @foxql/foxql-index
Basic usage
const foxqlIndex = require('@foxql/foxql-index');
const database = new foxqlIndex();
database.pushCollection({
collectionName : 'entrys',
fields : [
'title',
'content'
],
ref : 'documentId',
schema : {
title : {
type : 'string',
min : 3,
max : 80,
required : true
},
content : {
type : 'string',
min : 7,
max : 500,
required : true
},
documentId : {
createField : ['title', 'content']
}
}
});Add Analyzer methods
database.useCollection('entrys').registerAnalyzer('tokenizer', (string)=>{
return string.toLowerCase().replace(/ +/g, ' ').trim();
}); Add document
database.useCollection('entrys').addDoc({
title : 'test title',
content : 'test example content, very simple usage',
documentId : 1
});Search document
const results = database.useCollection('entrys').search("test query");
console.log(results);Export Database
const dump = database.export();Import Database
const dump = database.export();
database.import(dump);Change analyzer methods sort
database.useCollection('entrys').registerAnalyzer('tokenizer', (string)=>{
return string.toLowerCase().replace(/ +/g, ' ');
});
database.useCollection('entrys').registerAnalyzer('tokenizer2', (string)=>{
return string.trim();
});
//if want aboving change methods sort
database.useCollection('entrys').analyzerSteps = [
'tokenizer2',
'tokenizer'
];
Delete document
database.useCollection('entrys').deleteDoc('ref id');Get document by ref
database.useCollection('entrys').getDoc('ref id');