fix: Added fix to nasty bug which was inflating the number of coup cast predictions
Also made algolia code slightly more robust
This commit is contained in:
parent
6144675a41
commit
8e47215e6e
|
@ -135,9 +135,10 @@ async function processArray(countryArray) {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
results.push(processedPrediction1)
|
// results.push(processedPrediction1)
|
||||||
|
// Not pushing monthly
|
||||||
results.push(processedPrediction2)
|
results.push(processedPrediction2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// let string = JSON.stringify(results, null, 2)
|
// let string = JSON.stringify(results, null, 2)
|
||||||
// fs.writeFileSync('./data/elicit-questions.json', string);
|
// fs.writeFileSync('./data/elicit-questions.json', string);
|
||||||
|
|
|
@ -158,6 +158,7 @@ async function hypermind_inner(cookie) {
|
||||||
}
|
}
|
||||||
// console.log(resultsTotal)
|
// console.log(resultsTotal)
|
||||||
console.log(resultsTotalUnique)
|
console.log(resultsTotalUnique)
|
||||||
|
console.log(resultsTotalUnique.length, "results")
|
||||||
// let string = JSON.stringify(resultsTotalUnique, null, 2)
|
// let string = JSON.stringify(resultsTotalUnique, null, 2)
|
||||||
// fs.writeFileSync('./data/hypermind-questions.json', string);
|
// fs.writeFileSync('./data/hypermind-questions.json', string);
|
||||||
await upsert(resultsTotalUnique, "hypermind-questions")
|
await upsert(resultsTotalUnique, "hypermind-questions")
|
||||||
|
|
|
@ -3,42 +3,34 @@ import {getCookie} from "./getCookies.js"
|
||||||
import fs from "fs"
|
import fs from "fs"
|
||||||
|
|
||||||
import { mongoReadWithReadCredentials } from "./mongo-wrapper.js"
|
import { mongoReadWithReadCredentials } from "./mongo-wrapper.js"
|
||||||
|
import { mergeEverythingInner } from './mergeEverything.js';
|
||||||
|
|
||||||
let cookie = process.env.ALGOLIA_MASTER_API_KEY || getCookie("algolia")
|
let cookie = process.env.ALGOLIA_MASTER_API_KEY || getCookie("algolia")
|
||||||
const client = algoliasearch('96UD3NTQ7L', cookie); // delete this when committing
|
const client = algoliasearch('96UD3NTQ7L', cookie); // delete this when committing
|
||||||
const index = client.initIndex('metaforecast');
|
const index = client.initIndex('metaforecast');
|
||||||
|
|
||||||
export async function rebuildAlgoliaDatabase(){
|
|
||||||
let records = await mongoReadWithReadCredentials("metaforecasts")
|
|
||||||
// let string = JSON.stringify(json, null, 2)
|
|
||||||
// fs.writeFileSync('metaforecasts.json', string);
|
|
||||||
records = records.map((record, index) => ({...record, has_numforecasts: record.numforecasts ? true : false, objectID: index}) )
|
|
||||||
// this is necessary to filter by missing attributes https://www.algolia.com/doc/guides/managing-results/refine-results/filtering/how-to/filter-by-null-or-missing-attributes/
|
|
||||||
|
|
||||||
/*
|
export async function rebuildAlgoliaDatabase(){
|
||||||
index.clearObjects().wait().then(response => {
|
console.log("Doing this the hard way")
|
||||||
console.log(response)
|
let records = await mergeEverythingInner()
|
||||||
});
|
records = records.map((record, index) => ({...record, has_numforecasts: record.numforecasts ? true : false, objectID: index}) )
|
||||||
*/
|
// this is necessary to filter by missing attributes https://www.algolia.com/doc/guides/managing-results/refine-results/filtering/how-to/filter-by-null-or-missing-attributes/
|
||||||
|
|
||||||
if(index.exists()){
|
if(index.exists()){
|
||||||
console.log("Index exists")
|
console.log("Index exists")
|
||||||
index.replaceAllObjects(records, { safe:true }).catch(error => console.log(error))
|
index.replaceAllObjects(records, { safe:true }).catch(error => console.log(error))
|
||||||
console.log(`Pushed ${records.length} records. Algolia will update asynchronously`)
|
console.log(`Pushed ${records.length} records. Algolia will update asynchronously`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*await index.clearObjects()
|
|
||||||
console.log("Past data")
|
|
||||||
|
|
||||||
setTimeout(function(){
|
|
||||||
index.saveObjects(records, { autoGenerateObjectIDIfNotExist: true }).then(() =>
|
|
||||||
console.log("algolia search: done")
|
|
||||||
).catch(error => {
|
|
||||||
console.log("algolia search: error", error)
|
|
||||||
})
|
|
||||||
alert('hello');
|
|
||||||
}, 60*1000); // 1 minute seconds
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
//rebuildAlgoliaDatabase()
|
|
||||||
|
export async function rebuildAlgoliaDatabaseTheEasyWay(){
|
||||||
|
let records = await mongoReadWithReadCredentials("metaforecasts")
|
||||||
|
records = records.map((record, index) => ({...record, has_numforecasts: record.numforecasts ? true : false, objectID: index}) )
|
||||||
|
// this is necessary to filter by missing attributes https://www.algolia.com/doc/guides/managing-results/refine-results/filtering/how-to/filter-by-null-or-missing-attributes/
|
||||||
|
|
||||||
|
if(index.exists()){
|
||||||
|
console.log("Index exists")
|
||||||
|
index.replaceAllObjects(records, { safe:true }).catch(error => console.log(error))
|
||||||
|
console.log(`Pushed ${records.length} records. Algolia will update asynchronously`)
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,16 +1,23 @@
|
||||||
import { mongoRead, upsert } from "./mongo-wrapper.js"
|
import { mongoRead, upsert } from "./mongo-wrapper.js"
|
||||||
|
|
||||||
/* Merge everything */
|
/* Merge everything */
|
||||||
let sets = ["astralcodexten", "betfair", "coupcast", "csetforetell", "elicit", "estimize", "fantasyscotus", "foretold", "givewellopenphil", "goodjudgment","goodjudmentopen", "hypermind", "kalshi", "ladbrokes", "metaculus", "omen", "polymarket", "predictit", "rootclaim", "smarkets", "williamhill", "xrisk"]
|
let sets = ["astralcodexten", "betfair", "coupcast", "csetforetell", "elicit", /* "estimize" ,*/ "fantasyscotus", "foretold", "givewellopenphil", "goodjudgment","goodjudmentopen", "hypermind", "kalshi", "ladbrokes", "metaculus", "omen", "polymarket", "predictit", "rootclaim", "smarkets", "williamhill", "xrisk"]
|
||||||
let suffix = "-questions"
|
let suffix = "-questions"
|
||||||
|
|
||||||
export async function mergeEverything(){
|
export async function mergeEverythingInner(){
|
||||||
let merged = []
|
let merged = []
|
||||||
for(let set of sets){
|
for(let set of sets){
|
||||||
let json = await mongoRead(set+suffix)
|
let json = await mongoRead(set+suffix)
|
||||||
|
console.log(`${set} has ${json.length} questions`)
|
||||||
merged = merged.concat(json)
|
merged = merged.concat(json)
|
||||||
}
|
}
|
||||||
let mergedprocessed = merged.map(element => ({...element, optionsstringforsearch: element.options.map(option => option.name).join(", ")}))
|
let mergedprocessed = merged.map(element => ({...element, optionsstringforsearch: element.options.map(option => option.name).join(", ")}))
|
||||||
await upsert( mergedprocessed,"metaforecasts")
|
console.log(`In total, there are ${mergedprocessed.length} questions`)
|
||||||
|
return mergedprocessed
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function mergeEverything(){
|
||||||
|
let merged = await mergeEverythingInner()
|
||||||
|
await upsert( merged,"metaforecasts")
|
||||||
console.log("Done")
|
console.log("Done")
|
||||||
}
|
}
|
||||||
|
|
|
@ -53,17 +53,19 @@ export async function upsert (contents, documentName, collectionName="metaforeca
|
||||||
"timestamp": new Date().toISOString(),
|
"timestamp": new Date().toISOString(),
|
||||||
"contentsArray": contents
|
"contentsArray": contents
|
||||||
})
|
})
|
||||||
|
|
||||||
// Create a filter
|
// Create a filter
|
||||||
const filter = { "name": documentName };
|
const filter = { "name": documentName };
|
||||||
|
|
||||||
// Insert a single document, wait for promise so we can read it back
|
// Insert a single document, wait for promise so we can read it back
|
||||||
// const p = await collection.insertOne(metaforecastDocument);
|
// const p = await collection.insertOne(metaforecastDocument);
|
||||||
await collection.replaceOne(filter, document, { upsert: true });
|
await collection.replaceOne(filter, document, { upsert: true });
|
||||||
|
console.log(`Pushed document ${documentName} in collection ${collectionName} in database ${databaseName} with approximate size ${roughSizeOfObject(document)} MB`)
|
||||||
|
|
||||||
// Find one document
|
// Find one document
|
||||||
const myDocument = await collection.findOne(filter);
|
const myDocument = await collection.findOne(filter);
|
||||||
// Print to the console
|
// Print to the console
|
||||||
console.log(`Updating document ${documentName} in collection ${collectionName} in database ${databaseName} with approximate size ${roughSizeOfObject(contents)} MB`)
|
console.log(`Received document ${documentName} in collection ${collectionName} in database ${databaseName} with approximate size ${roughSizeOfObject(contents)} MB`)
|
||||||
console.log("Sample: ")
|
console.log("Sample: ")
|
||||||
console.log(JSON.stringify(myDocument.contentsArray.slice(0,1), null, 4));
|
console.log(JSON.stringify(myDocument.contentsArray.slice(0,1), null, 4));
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user