RegenCHOICE index
The essentials of RegenCHOICE processing
This is the shorter, denser version. I have also written a gentler explanation to explain in more detail.
An active enquiry is one that an enquirer created and maintained through the forming enquiry page, and is currently being tried. It contains two parts:
The system works only because some people have left their enquiry standing, waiting in the system. They contain the same parts, but we'll call them Other Answers, and Other Requirements.
When an active enquiry is tried, it is sent out to be compared with all the relevant standing enquiries, wherever they are held, and the enquiry results are presented to the enquirer. Here, outlined in the barest detail, is a sketchy outline of:
the response given back to the user
the results from each standing enquiry of the same type
the results from comparing one enquirer's question requirement with one answer from a standing enquiry
The response given back to the user
The overall aim of the processing involved in trying an enquiry is
to work out the number of fits among all the other standing enquiries
if that's more than a few, to give the number found, or an estimate, but no details
if that's a few, list key details of the corresponding
standing enquiries
if there is no fits, then
if there are questions for the enquirer to answer which would increasing the chances of a fit, give a list of those questions
if there are no such unanswered questions, give advice on what would need to give in order to find some fits; or alternatively encouragement to leave the enquiry standing ready to be found by others.
The result from one standing enquiry
The overall results will eventually come from any number of distributed servers. But for now, let's assume all the standing enquiries are held in one place.
The active enquiry is compared with every standing enquiry of the same type. Each enquirer question requirement is compared with its corresponding standing enquiry answer; and each other requirement is compared with its corresponding enquirer answer, if present.
The process for a single comparison
For each comparison between an active enquiry and one other standing enquiry, there are 4 possible outcomes – the Other's Answers can fit with the Enquirer's Question requirements, or not; and the Enquirer's Answers can fit with the Other's Question requirements, or not.
A “fit” (or “correspondence”) is when, for the enquirer and the other, the other's Answers fit the relevant Enquirer's Question requirements, at the same time as the Enquirer's Answers fit the relevant Other's Question requirements
“Enquirer-met” is where all the Enquirer's Question requirements fit the other's answers, but at least one Enquirer's Answer is outwith the relevant Other's Question requirement
“Other-met”, where all the Enquirer's Answers are within the Other's Question requirements, but at least one Other's Answer is outwith the relevant Enquirer's Question requirement
Both misfit is where there is some Enquirer's Answer outwith the relevant Other's Question requirement, and some Other's Answer outwith the relevant Enquirer's Question requirement
In practice, the last two can both be treated together as just a misfit, as if for any reason the other's answers are not within the Enquirer's Question requirements, the other is of no interest and can be passed over.
For Enquirer-met, where the Other's Answers are all within the Enquirer's Question requirements, there is an important difference between when some Enquirer's Answer is a misfit, or just absent for the relevant Other's Question requirement. If there is not quite correspondence, but also no explicit misfits, then if there is just one missing Enquirer's Answer, this is vitally useful information, as the question can be asked of the enquirer to resolve whether there is correspondence or not. If there are more gaps in the Enquirer's Answers, that may also be interesting, but not of such high priority.
The following information needs to be returned to the ongoing process:
If it was a fit, then some identifier of the Other, together with the Other's relevant Answers, including times and location, if relevant
If there was just one missing Enquirer's Answer, then the ID of that single question that was not answered by the enquirer
if there were several missing Enquirer's Answers, then the list of questions that were not answered by the enquirer
Grouping the comparisons
This is most clearly done at the server level – the place where a set of standing enquiries are actually held. At any specific server, the results returned from each single comparison are put together:
the running total of the fit count is kept;
if, at the end, the total number of correspondences is between 1 and 9, then the number plus the IDs of all the correspondents are returned, together with relevant answers and locations;
if there are no correspondences, then:
if there are any cases of one missing Enquirer's Answer, then return all the questions that arise from those
else if there are no such cases, then return the most common missing Enquirer's Answers.
This process can be repeated fractally down a tree of servers:
if there are 10 or more correspondences, the total number is returned;
else if there are 1 to 9, the number and the IDs are returned, along with the relevant answers, times and locations;
else there are still no aggregate correspondences, return the questions as above.
The final return to the enquirer
The enquirer gets to see:
if 10 or more other enquiries fit, the total number, and possibly (only) the IDs of the closest 9 (not names or contact details);
else if there are 1 to 9, the details of the fitting enquiries are returned, including relevant Other's Answers;
else there are still no aggregate correspondences but there are some cases of Enquirer-met:
if there are any cases of one missing Enquirer's Answer, then all those unanswered questions need to be presented back to the enquirer
else if there are some cases of multiple missing Enquirer's Answers, then the most common unanswered questions are presented back.
Demo versions
Clearly for a demo we don't need multiple servers, so some of the above can be elided.
More about this in the development path.
backlinks