标准化数据库的全文搜索

时间:2009-12-28 18:29:25

标签: sql sql-server full-text-search

我有一个规范化的sql server 2005数据库。表格的示例如下:

位置


LocationID, 顾客ID, 订单ID

这是缩写。但是,正常的查询语法只是使用连接来显示位置为城市状态zip和客户名称等等。

我想对这些值实施全文搜索。因此,如果LocationID = 43这是Phoenix AZ,我希望用户能够搜索“Phoenix”或“AZ”并返回相关的行。同样,如果他们搜索“史密斯菲尼克斯”,他们将获得一个名字与凤凰城史密斯相似的客户的所有订单。

我的问题是,我应该使用View还是UDF构建一个用'Phoenix AZ'替换值43的表?并从那里实施全文搜索?

如何在规范化数据库上实施全文搜索?

2 个答案:

答案 0 :(得分:2)

您需要在包含字符串值的表上添加全文索引。然后使用 CONTAINS FREETEXT 以及您的联接。

另请参阅 CONTAINSTABLE FREETEXTTABLE

http://doc.ddart.net/mssql/sql2000/html/acdata/ac_8_qd_15_1m9f.htm

答案 1 :(得分:0)

老实说,对于这样的事情,我会使用Lucene.NET(假设是一个.NET前端,或者只是Lucene用于后端)。虽然您可以搜索每个项目,但我发现SQL Server全文搜索比它的价值更令人痛苦。

使用Lucene,您可以在数据库中添加/编辑/删除项目时创建索引,然后搜索这些索引(每个项目都是包含您指定的字段的文档)。