Selection Engine

like SQL with extra stuff!


Downloads

History

Once upon a time, one of the projects i was responsible for was a Web-based system that recommended PCs. The customer, a normal Joe who knew nothing about computers, would come to our Web site wanting to buy a computer but not knowing what they want. Since it was on the Web, the customer couldn't ask our rarely available, third-rate, minimum wage sales people for advice. So we built a program that asked you a few questions then made a couple of recommendations

The system, called CTO, was awful. So i took three weeks one summer and spent my free time writing a simple Case Based Reasoning engine that would give good recommendations. That code that i wrote in my spare time is what you have here

i wrote it partially to show the people at work what a program could look like if they dared to dream bigger but also to help others understand how this AI stuff (yes, this is considered AI) worked. So i made it as generic as possible. The code is in Java (it was the first Java program i'd ever written; i don't think i ever wrote another one), the data is in text files and the schema is defined at run time (again through text files). i made the decision to shoot for flexibility rather than performance, so in The Selection Engine you can specify which fields to include at run time as well as the weights of each field

Use

The code is meant to be cannibalized. i don't know that anyone would use the code as-is. In my case, had my employer been interested, the fields would have been hard coded (allowing me to avoid the not-so-elegant data typing classes), the data would have been in a database and the code would have been in ASP.NET (the company standard at the time). The code works just fine as it is now, but it is generic and thus unoptimized

Known Uses

i wrote the code, convinced myself it worked then decided to do what i do with all my code (and documents) and just throw it away. But a professor convinced me to put it somewhere where others could get it if they wanted. Not that i could imagine anyone else caring

So i put the code here (or tried; CVS hates me) and wrote an article describing it in Java Pro magazine (Dobbs asked for a submission but eventually turned it down; the same month my Java Pro article came out, they published an article on the same topic but written by another person)

Within two months, i had gotten emails from various people claiming they actually read the article (why?) and were going to use the code. So TSE is used in at least 12 PhD dissertations and by at least two companies (both real estate companies). And one guy was really cool and wrote a mySQL adapter for it. And another guy in New Zealand wrote yet another article describing TSE, and New Zealand is like hundreds of miles away (i think; i know it's not in Texas; after that i get a little fuzzy on distances)

Version History

i wrote it in 2000. i haven't touched it since

Feedback & Support

Now for the audience participation part of our show.

If you have questions about The Selection Engine, want to help improve it (which means i have to make actual Source Forge builds and what not, and for some reason i am not getting the hang of CVS) or want to see me write more articles (assumedly on AI stuff, but i'm open to suggestions), or if you just want to send me a million dollars, go ahead and send me an email at baylorw @ yahoo