我有一个规范化的sql server 2005数据库。表格的示例如下:
位置
LocationID, 顾客ID, 订单ID
这是缩写。但是,正常的查询语法只是使用连接来显示位置为城市状态zip和客户名称等等。
我想对这些值实施全文搜索。因此,如果LocationID = 43这是Phoenix AZ,我希望用户能够搜索“Phoenix”或“AZ”并返回相关的行。同样,如果他们搜索“史密斯菲尼克斯”,他们将获得一个名字与凤凰城史密斯相似的客户的所有订单。
我的问题是,我应该使用View还是UDF构建一个用'Phoenix AZ'替换值43的表?并从那里实施全文搜索?
如何在规范化数据库上实施全文搜索?
答案 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,您可以在数据库中添加/编辑/删除项目时创建索引,然后搜索这些索引(每个项目都是包含您指定的字段的文档)。