feat: improve indexing performance

This commit is contained in:
thecodrr
2020-11-16 12:57:39 +05:00
parent e53f40dff9
commit 0c7f058051
4 changed files with 18 additions and 10 deletions

View File

@@ -17,16 +17,18 @@ export default class Lookup {
notes(notes, query) {
return sm.union(
this._db.content._collection.search.search(query, {
shouldMap: true,
map: (elem) => {
return notes.find((note) => note.contentId === elem);
},
}),
this._db.notes._collection.search.search(query)
this._db.notes._collection.search.search(query, { shouldMap: true })
);
}
notebooks(array, query) {
return this._db.notebooks._collection.search.search(query, {
shouldMap: true,
map: (elem) => {
return array.find((nb) => nb.id === elem);
},

View File

@@ -7,16 +7,18 @@ import IndexedCollection from "./indexed-collection";
export default class CachedCollection extends IndexedCollection {
async init() {
const index = new PersistentCachedMap(`${this.type}Index`, this.storage);
const store = new PersistentCachedMap(`${this.type}Store`, this.storage);
await index.init();
const store = new PersistentCachedMap(this.storeKey, this.storage);
await store.init();
this.search = new HyperSearch({
schema: getSchema(this.type),
tokenizer: "forward",
index,
store,
onIndexUpdated: async () => {
await this.storage.write(this.indexKey, this.search.indexer.export());
},
});
const index = await this.storage.read(this.indexKey);
this.search.indexer.import(index);
}
exists(id) {

View File

@@ -14,6 +14,8 @@ export default class IndexedCollection {
constructor(storage, type) {
this.type = type;
this.storage = storage;
this.indexKey = `${this.type}Index`;
this.storeKey = `${this.type}Store`;
}
clear() {
@@ -21,16 +23,18 @@ export default class IndexedCollection {
}
async init() {
const index = new PersistentCachedMap(`${this.type}Index`, this.storage);
const store = new PersistentMap(`${this.type}Store`, this.storage);
await index.init();
await store.init();
this.search = new HyperSearch({
schema: getSchema(this.type),
tokenizer: "forward",
index,
store,
onIndexUpdated: async () => {
await this.storage.write(this.indexKey, this.search.indexer.export());
},
});
const index = await this.storage.read(this.indexKey);
this.search.indexer.import(index);
}
async addItem(item) {

View File

@@ -2704,8 +2704,8 @@ http-signature@~1.2.0:
sshpk "^1.7.0"
"hypersearch@https://github.com/streetwriters/hypersearch":
version "0.1.0"
resolved "https://github.com/streetwriters/hypersearch#fa5d2b8435c1b7bca4b5f8059054da848fe1631f"
version "0.2.2"
resolved "https://github.com/streetwriters/hypersearch#951e68c2f4dfd12325094791b8d430d6f1c4128e"
iconv-lite@0.4.24:
version "0.4.24"