http://qs321.pair.com?node_id=996530

BUU has asked for the wisdom of the Perl Monks concerning the following question:

This is slightly more of a conceptual/design problem than an actual code problem, so I'm mostly hoping for suggestions of avenues to explore or modules that do similar things.

I have a largish series of sets (10,000+) that will continue to increase over time. Every set is made up of around 15-100, one to four word phrases, with duplicates. I want to be able to store these sets in my database and then retrieve *similar* sets based on the current set I'm examining.

That is, I have a page in my application that, given a specific set, either pulled from the database or entered by the user, the app needs to go to the database and find all the other sets that are similar based on ideally a configurable variable denoting how much difference is acceptable, i.e. 1% or 5% difference in the sets.

There's a couple of somewhat obvious answers but most of those involve doing the set comparisons in the Perl layer which has the undesirable requirement of loading every single existing set into the database before you can compare against them.

My ideal implementation allows me to perform a single select that will pull out all of the sets that are similar, but I'm open to alternatives, hopefully ones that don't involve comparing against every single existing set.

Thoughts?