【发布时间】:2012-03-08 04:32:08
【问题描述】:
我正在搜索一个 MySQL 数据库。可以说这是一个人的数据库。查询特定记录时,可以在每个属性上找到 100% 的匹配项。但是查询数据库以找到概率上的最接近匹配(表属性上的最接近匹配)更多的是策略。
在这种情况下,创建一个临时表(很像一个计数表)来指示哪些属性匹配/存在哪些属性是否有意义?像这样对数据库进行高级搜索的典型方法是什么?
假设存储过程的示例(如下)
*parameters 只是为了举例说明我将如何搜索。我不关心如何执行我的选择。问题是关于方法、策略、技术的 *
call FindPerson ("Brown Eyes", "Brown hair", "Height:6'1", "white", "Name:Joe" ,"weight180", "Age 34" "sex m");
RESULT TABLE
NAME AGE HEIGHT WEIGHT HAIR SKIN sex RANK_MATCH
Joe 32 6'1 180 Brown white m 1
Mike 33 6'1 179 Brown white m 2
James 31 6'0 179 Brown black m 3
【问题讨论】:
-
我很想看看人们的反应。我以前也有过这个问题。
-
最接近的匹配是什么意思?您是否想要两个查找具有与给定字符串相似的属性的记录?
-
你说的是“预定义的标签匹配”还是“文本匹配”?
-
当然,我将在年龄上使用“BETWEEN VALUES”,在名称上使用“LIKE”,在性等属性上使用 WHERE,还有一堆疯狂的联合和连接。但是我应该如何计算才能找到壁橱比赛的概率?
-
基本上,这就像一个猜谜游戏,你想知道计算给定查询实际上是指给定人或一组人的概率的最佳方法。