我尝试创建一个解决方案,允许我的用户在我的数据库中执行类似谷歌的搜索记录。通过这种方式,我的意思是他们可以在不指定列的情况下以各种方式搜索数据。以下是了解我的结构和规格的几点。
以下是我今天如何实现这一目标:
每当记录或相应记录发生变化时,我们会在searchindex表中创建一条记录,其中包含与该记录关联的所有相关关键字。例如,库存记录将包含已连接表的收据编号,订单编号,库存状态等。 searchindex表使用SQL Server全文索引编制索引,效果非常好。
问题:
当前设置的问题是我们必须维护searchindex表中的数据。这意味着每当我们的代码中任何数据发生变化时,我们都需要调用存储过程来更新searchindex。由于我们的应用程序的复杂性,这太麻烦而且经常失败。
我想实现更流畅的解决方案,以便searchindex始终保持最新状态。
有什么想法吗?
感谢。
答案 0 :(得分:1)
您可以使用视图来消除对必须不断更新的单个表的需要。类似的东西:
CREATE VIEW Full_Search
AS
SELECT invoice_number AS search_text, 'Invoices' AS table_name, 'invoice_number' AS column_name, invoice_id AS id
UNION ALL
SELECT part_number AS search_text, 'Parts' AS table_name, 'part_number' AS column_name, part_id AS id
...
然后,您可以搜索视图以查找匹配的表格,列和行。这依赖于所有具有单个列PK的表,以便它们可以混合在一起。
性能在很大程度上取决于搜索的完成方式。如果搜索允许使用索引(例如,没有WHERE search_text LIKE '%value%'
),那么性能可能不会那么差。