private void initialize() throws LSHException {
		if (cacheMap != null) {
			return;
		}
		cacheMap = new TreeMap<String, Float>();
		QueryOptionalExist query = new QueryOptionalExist();
		query.tableName = TABLE_NAME;
		query.keyType = Types.VARCHAR;
		query.valueType = Types.REAL;
		query.attemptCreation = true;		// Create table if it doesn't already exist
		ResponseOptionalExist response = query.execute(db);
		if (response == null) {
			throw new LSHException(db.getLastError().message);
		}
		if (response.wasCreated) {
			return;
		}
		setUpQuery(2);
		queryValue.keys[0] = SIMILARITY_KEY;
		queryValue.keys[1] = SIGNIFICANCE_KEY;
		ResponseOptionalValues optionalresponse = queryValue.execute(db);
		if (optionalresponse == null) {
			throw new LSHException(db.getLastError().message);
		}
		Float simObj = (Float) optionalresponse.resultArray[0];
		Float sigObj = (Float) optionalresponse.resultArray[1];
		if (simObj != null && sigObj != null) {
			simThreshold = simObj.doubleValue();
			sigThreshold = sigObj.doubleValue();
		}
	}
Make sure the backing database table exists, and if it doesn't, create it.
If the table existed previously, try to read thresholds from it
@throws LSHException for problems with the connection
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/client/TableScoreCaching.java