i am planning to go with JavaScript Search engine with Angular/Vue.js/Meteor/React as front-end
Choice of javascript client side storage is below
1) IndexedDB
2) JScene
3) LargeLocalStorage
4) ydn db
5) PouchDB
Links for reference
https://github.com/tantaman/LargeLocalStorage
https://gist.github.com/inexorabletash/a279f03ab5610817c0540c83857e4295
http://lintool.github.io/JScene/
https://db-engines.com/en/system/LokiJS%3BPouchDB%3BSolr
Please kindly suggest which one to go...
Basically planning to built a cross platform system which accepts huge files from the user and finally does a full text search...
In this way, the user just needs the browser no installation is required......
In this way, the application will be purely portable irrespective of OS....
This would be absolutely cross platform
Featurs trying to build once the files got indexed by the front-end code/logic
1) Search Box with type-ahead search
2) Combo box to choose the language
3) Number of hits should be while typing. Please type some text in and
you will understand what is number of hits
4) Search keyword should be highlighted in the left with portion of text.
On clicking the text, the entire subject with highlighted search
should shown in the right
nearly 2,000 files are in text format of 600 kB each size.
the files can be anything - log file or any text file....If support other formats also it is well and good
need suggestions or comments...
I never come across several open source apps which does full text search or have the functionality which does everything in front-end or client-side
Thanks.
let searchBox: AutoComplete = new AutoComplete({
dataSource: searchJson,
filtering: (e: any) => {
if (e.text && e.text.length < 3) return;
(elasticlunr as any).clearStopWords();
searchInstance = (elasticlunr as any).Index.load(searchJson);
var val = searchInstance.search(e.text, {
fields:
{
component: { boost: 1 },
name: { boost: 2 }
},
expand: true,
boolean: 'AND'
});
let query: Query = new Query().take(10).select('doc');
var fields = this.fields;
e.updateData(val, query, fields);
},
minLength: 3,
placeholder: 'Search any components or features..',
noRecordsTemplate: '<div class="search-no-record">We’re sorry. We cannot find any matches for your search term.</div>',
fields: { groupBy: 'doc.component', value: 'doc.name', text: 'doc.name' },
popupHeight: 'auto',
suggestionCount: 10,
highlight: true,
});
searchBox.appendTo('#search-box'); |