我能明白你为什么要问这个有趣的问题。如果测试人员输入关键字列表,并使用信息模式视图获取匹配列的列表,则存在大量错误匹配可能浪费时间或导致测试人员输入错误信息的危险进入你的系统。您想知道如何确定哪些列与测试人员的查询最匹配。但是你想保持简单,因为这只是一个临时解决方法,它不是你的主要应用程序。
答案是使用基于声誉的系统来补充搜索结果。这是一个非常简单的应用程序应该很好地工作。
首先,创建两个简单表来存储数据库中表和列的评级信息。这是起始结构。
TEST_SEARCH_TABLES:
TABLE_ID
TABLE_NAME
RATING
TEST_SEARCH_COLUMNS:
COLUMN_ID
TABLE_ID
COLUMN_NAME
RATING
使用数据库中每个表的名称填充TEST_SEARCH_TABLES。用每个列的名称填充TEST_SEARCH_COLUMNS,并将其链接到相应的表。将所有RATING列初始化为1000.0 - 您将使用Elo Rating System来补充您的排名,因为它很简单,易于实施并且效果很好。
当用户输入关键字列表时,请勿使用信息架构视图。而应在TEST_SEARCH_COLUMNS表中搜索包含任何这些关键字的列。根据点击次数为每列分配一个WEIGHT。 (例如,如果搜索是“客户,金额,收入”,那么CUSTOMER_ID列将具有权重1. CUSTOMER_INCOME列将具有权重2,并且CUSTOMER_INCOME_AMOUNT将具有权重3.)计算每个表作为其列的权重的总和。
现在对于您的搜索返回的每个表格和列,将WEIGHT乘以RATING以确定SEARCH VALUE。按照搜索值的降序给测试人员提供匹配表的列表。在每个表中,还按照搜索值的降序列出列。
每次在搜索中出现表格或列时,请使用Elo评分系统对其评分为1000.0的对手给予胜利。每当用户选择要使用的列时,请将该列和其表格与对手评分1500.0进行比较。通过这种方式,最有用和最成功的表格和列将随着时间的推移有机地浮动到搜索列表的顶部。
该方法的一个好处是(使用表而不是信息模式视图)是这种方法更具可扩展性。作为增强功能,您可以将DESCRIPTION和COMMENTS列放在TEST_SEARCH_TABLES和TEST_SEARCH_COLUMNS表上,并且还可以在这些列中搜索关键字匹配。
这是另一个可选的增强功能 - 您可以在每个表格和列旁边放置一个(+)和( - )按钮,并且在用户点击(+)和损失如果用户点击( - ),则评级为零的对手。这将允许您的测试人员投票选择他们认为重要的列,并投票反对总是阻碍的列。
你有一个奇怪的过程,我必须说 –
如果你定义什么是“最合适”的意思,这将有所帮助。如果我输入“foo”,是否要在列名称或列数据中查找带'foo'的列? – Pondlife
@ Dr.Dan我们的确做到了。这是暂时的:) –