I'm trying to figure out how to implement a "strength based search" using multiple fields/terms. For example:
Searching:
- Number Of Legs: 4
- Has Fur: True
- Has Hooves: True
- Keywords: Moo
Results:
- [High] Cow
- [Medium] Cat
- [Medium] Dog
- [Low] Hairless Mole-rat
- [No Match] Bird
It may be worth mentioning that the criteria in my actual model is somewhat weighted, related, and structured.
My language of choice is C#.NET, and I'm using LINQ + Fluent NHibernate. I have been playing around with a few different ways to implement this, but most feel clunky. Currently, the DB I'm using has over 100,000 "Animals", and they can be searched on against ~15 fields.
Questions:
Does this kind of search have a name?
Are there best practices or techniques that I should be aware of while trying to implement this?
What are some high performance ways to implement a search like this? Psuedo code and general logic appreciated just as much as code.