我知道SQL Server全文索引不能索引多个表。但是,我在要实现全文索引的表中有关系。
拿下面的3张桌子...
Vehicle
Veh_ID - int (Primary Key)
FK_Atr_VehicleColor - int
Veh_Make - nvarchar(20)
Veh_Model - nvarchar(50)
Veh_LicensePlate - nvarchar(10)
Attributes
Atr_ID - int (Primary Key)
FK_Aty_ID - int
Atr_Name - nvarchar(50)
AttributeTypes
Aty_ID - int (Primary key)
Aty_Name - nvarchar(50)
Attributes和AttributeTypes表包含可在正在构建的整个应用程序的下拉列表中使用的值。例如,“车辆颜色”的属性类型具有“黑色”,“蓝色”,“红色”等属性。
好的,因此当用户尝试搜索“ Blue Ford Mustang”时就会出现问题。那么,考虑到Vehicle等表格会变得很大,什么是最佳解决方案?
我是否要在“车辆”表中创建另一个字段“ Veh Color”,该字段除了“ FK Atr VehicleColor”外,还保留下拉菜单中所选内容的文本值?
或者,我是否完全删除“ FK Atr VehicleColor”并添加“ Veh Color”?当下拉列表以更新形式填充时,我可以使用“ Veh Color”的文本值与“ Atr Name”匹配。使用这种方法,我将不得不处理是否从数据库中删除了属性。
-注意:不能在代码视图之外使用下划线,因为两个下划线之间的所有内容均为斜体。
您可以创建一个视图,提取所需的任何数据,然后将全文索引应用于该视图。该视图需要使用“ WITH SCHEMABINDING”选项创建,并且需要具有UNIQUE索引。
CREATE VIEW VehicleSearch
WITH SCHEMABINDING
AS
SELECT
v.Veh_ID,
v.Veh_Make,
v.Veh_Model,
v.Veh_LicensePlate,
a.Atr_Name as Veh_Color
FROM
Vehicle v
INNER JOIN
Attributes a on a.Atr_ID = v.FK_Atr_VehicleColor
GO
CREATE UNIQUE CLUSTERED INDEX IX_VehicleSearch_Veh_ID ON VehicleSearch (
Veh_ID ASC
) ON [PRIMARY]
GO
CREATE FULLTEXT INDEX ON VehicleSearch (
Veh_Make LANGUAGE [English],
Veh_Model LANGUAGE [English],
Veh_Color LANGUAGE [English]
)
KEY INDEX IX_VehicleSearch_Veh_ID ON [YourFullTextCatalog]
WITH CHANGE_TRACKING AUTO
GO
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。