mirror of
				https://gitlab.com/MrFry/mrfrys-node-server
				synced 2025-04-01 20:24:18 +02:00 
			
		
		
		
	Searching in matching questiondbs first
This commit is contained in:
		@@ -919,7 +919,7 @@ function GetApp(): ModuleType {
 | 
			
		||||
      `No suitable questiondbs found for ${location}, creating a new one...`
 | 
			
		||||
    )
 | 
			
		||||
    const newDb: DataFile = {
 | 
			
		||||
      path: `${location}.json`,
 | 
			
		||||
      path: `questionDbs/${location}.json`,
 | 
			
		||||
      name: location,
 | 
			
		||||
      shouldSearch: {
 | 
			
		||||
        location: {
 | 
			
		||||
@@ -968,7 +968,9 @@ function GetApp(): ModuleType {
 | 
			
		||||
    const user: User = req.session.user
 | 
			
		||||
    const dryRun = testUsers.includes(user.id)
 | 
			
		||||
    if (!req.body.location) {
 | 
			
		||||
      logger.Log('\tbody.location is missing')
 | 
			
		||||
      logger.Log(
 | 
			
		||||
        '\tbody.location is missing, client version:' + req.body.version
 | 
			
		||||
      )
 | 
			
		||||
      res.json({ msg: 'body.location is missing' })
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
@@ -1092,13 +1094,14 @@ function GetApp(): ModuleType {
 | 
			
		||||
      return
 | 
			
		||||
    }
 | 
			
		||||
    const subj: any = req.body.subj || ''
 | 
			
		||||
    // TODO: test if testUrl is undefined
 | 
			
		||||
    // TODO: test if testUrl is undefined (it shouldnt)
 | 
			
		||||
    const testUrl = req.body.testUrl
 | 
			
		||||
      ? req.body.testUrl.split('/')[2]
 | 
			
		||||
      : undefined
 | 
			
		||||
 | 
			
		||||
    writeAskData(req.body)
 | 
			
		||||
 | 
			
		||||
    // every question in a different thread
 | 
			
		||||
    const resultPromises = req.body.questions.map((question) => {
 | 
			
		||||
      return getResult(question, subj, null, req.body, testUrl)
 | 
			
		||||
    })
 | 
			
		||||
@@ -1156,25 +1159,68 @@ function GetApp(): ModuleType {
 | 
			
		||||
    }
 | 
			
		||||
  })
 | 
			
		||||
 | 
			
		||||
  function getDbIndexesToSearchIn(testUrl, trueIfAlways?) {
 | 
			
		||||
    return testUrl
 | 
			
		||||
      ? questionDbs.reduce((acc, qdb, i) => {
 | 
			
		||||
          if (shouldSearchDataFile(qdb, testUrl, trueIfAlways)) {
 | 
			
		||||
            acc.push(i)
 | 
			
		||||
          }
 | 
			
		||||
          return acc
 | 
			
		||||
        }, [])
 | 
			
		||||
      : []
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  function getResult(question, subj, recData, recievedData, testUrl?) {
 | 
			
		||||
    return new Promise((resolve) => {
 | 
			
		||||
      let searchIn = testUrl
 | 
			
		||||
        ? questionDbs.reduce((acc, qdb, i) => {
 | 
			
		||||
            if (shouldSearchDataFile(qdb, testUrl, false)) {
 | 
			
		||||
              acc.push(i)
 | 
			
		||||
      const searchIn = getDbIndexesToSearchIn(testUrl, false)
 | 
			
		||||
 | 
			
		||||
      searchInDbs(
 | 
			
		||||
        question,
 | 
			
		||||
        subj,
 | 
			
		||||
        recData,
 | 
			
		||||
        recievedData,
 | 
			
		||||
        searchIn,
 | 
			
		||||
        testUrl
 | 
			
		||||
      ).then((res: any) => {
 | 
			
		||||
        if (res.result.length === 0) {
 | 
			
		||||
          logger.DebugLog(
 | 
			
		||||
            `No result while searching specific question db ${testUrl}`,
 | 
			
		||||
            'ask',
 | 
			
		||||
            1
 | 
			
		||||
          )
 | 
			
		||||
          const searchInMore = getDbIndexesToSearchIn(testUrl, true).filter(
 | 
			
		||||
            (x) => {
 | 
			
		||||
              return !searchIn.includes(x)
 | 
			
		||||
            }
 | 
			
		||||
            return acc
 | 
			
		||||
          }, [])
 | 
			
		||||
        : 'all'
 | 
			
		||||
          )
 | 
			
		||||
          searchInDbs(
 | 
			
		||||
            question,
 | 
			
		||||
            subj,
 | 
			
		||||
            recData,
 | 
			
		||||
            recievedData,
 | 
			
		||||
            searchInMore,
 | 
			
		||||
            testUrl
 | 
			
		||||
          ).then((res) => {
 | 
			
		||||
            resolve(res)
 | 
			
		||||
          })
 | 
			
		||||
        } else {
 | 
			
		||||
          resolve(res)
 | 
			
		||||
        }
 | 
			
		||||
      })
 | 
			
		||||
    })
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
      if (searchIn.length === 0) {
 | 
			
		||||
        searchIn = 'all'
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      // console.log(searchIn)
 | 
			
		||||
 | 
			
		||||
      // searchIn could be [0], [1], ... to search every db in different thread. Put this into a
 | 
			
		||||
      // forEach(qdbs) to achieve this
 | 
			
		||||
  function searchInDbs(
 | 
			
		||||
    question,
 | 
			
		||||
    subj,
 | 
			
		||||
    recData,
 | 
			
		||||
    recievedData,
 | 
			
		||||
    searchIn,
 | 
			
		||||
    testUrl?
 | 
			
		||||
  ) {
 | 
			
		||||
    // searchIn could be [0], [1], ... to search every db in different thread. Put this into a
 | 
			
		||||
    // forEach(qdbs) to achieve this
 | 
			
		||||
    return new Promise((resolve) => {
 | 
			
		||||
      doALongTask({
 | 
			
		||||
        type: 'work',
 | 
			
		||||
        data: {
 | 
			
		||||
 
 | 
			
		||||
@@ -298,8 +298,8 @@ export function shouldSearchDataFile(
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  // FIXME: always return true if it gets here?
 | 
			
		||||
  return true
 | 
			
		||||
  logger.DebugLog(`no suitable dbs for ${testUrl}`, 'shouldSearchDataFile', 1)
 | 
			
		||||
  return false
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export function shouldSaveDataFile(
 | 
			
		||||
 
 | 
			
		||||
@@ -564,7 +564,7 @@ if (!isMainThread) {
 | 
			
		||||
 | 
			
		||||
      try {
 | 
			
		||||
        qdbs.forEach((qdb) => {
 | 
			
		||||
          if (searchIn === 'all' || searchIn.includes(qdb.index)) {
 | 
			
		||||
          if (searchIn.length === 0 || searchIn.includes(qdb.index)) {
 | 
			
		||||
            const res = doSearch(
 | 
			
		||||
              qdb.data,
 | 
			
		||||
              subjName,
 | 
			
		||||
 
 | 
			
		||||
 Submodule submodules/qmining-page updated: 6251456781...e5138adf66
									
								
							
		Reference in New Issue
	
	Block a user