From 08186da304e89de3b61d2a2f3b438598856579fc Mon Sep 17 00:00:00 2001
From: alex <alex@alexloehr.net>
Date: Sun, 22 Jun 2025 09:07:41 +0000
Subject: [PATCH] GS-2156
---
lib/search.js | 44 ++++++++++++++++++++++++++++++++++++--------
1 files changed, 36 insertions(+), 8 deletions(-)
diff --git a/lib/search.js b/lib/search.js
index d054498..11e1536 100644
--- a/lib/search.js
+++ b/lib/search.js
@@ -1,11 +1,14 @@
const _ = require("lodash")
const {Index, Document, Worker} = require("flexsearch")
+const settings = require("../settings")
+const fs = require("node:fs")
/////////////////////////////////////////////////////////////////////////
// Message index
const options = {
- tokenize: "full",
+ // tokenize: "full",
+ tokenize: "forward",
split: true,
}
@@ -67,28 +70,46 @@
// .then(console.log)
// .catch(console.error)
-async function run() {
+async function run () {
await doIndex()
console.log(search("latu"))
}
/////////////////////////////////////////////////////////////////////////
+let indexed = false
async function doIndex () {
const start = Date.now()
console.log("++ START indexing Users...")
- let users = require("../users.json")
- // users = users.slice(10)
+ const {readFromFile, file} = settings.search
+ clearIndex(idxUser)
+
+ let users
+ if (readFromFile) {
+ users = fs.readFileSync(file, "utf8")
+ users = JSON.parse(users)
+ }
+ else {
+ console.log("~~~ reading users from DB ... ~~~")
+ const db = require("./db")
+ const {data} = await db.getUsers(0, 100000)
+ console.log(`loaded ${data.length} users from DB...`)
+ users = data
+ }
for (const user of users) {
addUser(user)
// addTags(user)
}
+ indexed = true
console.log(`++ END indexing Users in ${Date.now() - start}ms`)
}
-function search (query) {
- return idxUser.search(query)
+async function search (query) {
+ // when called from a cli program the search index is not initalized
+ if(!indexed) await doIndex()
+ const searchLimit = 10000
+ return idxUser.search(query, searchLimit)
}
function searchUsers (query, user) {
@@ -108,8 +129,11 @@
/////// idxMessage FNS ////////////////////////////////////////////////////////////////
function getUserString (user) {
- const {usr_id, firstname, lastname} = user
- return `${usr_id} ${firstname} ${lastname}`.trim()
+ const {usr_id, firstname, lastname, login, institution, department} = user
+ // if(firstname.trim()==="Adolfo") console.log(user)
+ return `${login} ${firstname} ${lastname} ${institution} ${department}`.trim()
+ // return `${usr_id} ${login} ${firstname} ${lastname} ${institution} ${department}`.trim() // KEINE usr_id
+ // return `${usr_id} ${firstname} ${lastname}`.trim()
}
function addUser (user) {
@@ -124,6 +148,10 @@
remove(idxUser, usr_id)
}
+function clearIndex(index) {
+ index.clear()
+}
+
/////// idxTags FNS ////////////////////////////////////////////////////////////////
--
Gitblit v1.8.0