我创建了一个包含几个字段的索引视图,我基于这些字段创建了全文搜索。
这是我的观点:
alter VIEW vFullTextSearch
WITH SCHEMABINDING
AS
SELECT M.Id as MessageId, M.Subject , M.Body,MR.EmailAddress, MR.FriendlyName,
M.Subject + ' ' + M.Body + ' ' + MR.EmailAddress + ' ' + MR.FriendlyName as FTS
FROM DBO.MESSAGE M
INNER JOIN DBO.MessageRecipient MR ON M.Id = MR.MessageId AND MR.RecipientTypeId=1
GO
--Create an index on the view.
CREATE UNIQUE CLUSTERED INDEX IDX_V1_vFTS
ON vFullTextSearch (MessageId);
GO
我索引了表的所有字段。
我正在使用此 SQL 来查找结果
SELECT M.*
FROM Message AS M
INNER JOIN FREETEXTTABLE(vFullTextSearch, *, 'Doe') AS KEY_TBL
ON M.Id = KEY_TBL.[KEY];
但是“John Doe”是[vFullTextSearch.FriendlyName]
我认为所有记录中的值,为什么在搜索所有字段中的“doe”时我没有得到结果?
根据 MSDN ... http://msdn.microsoft.com/en-us/library/ms177652.aspx
table 已标记为全文查询的表的名称。表或视图可以是一个、两个或三个部分的数据库对象名称。查询一个视图时,只能涉及一张全文索引基表。 表不能指定服务器名称,也不能用于对链接服务器的查询。
由于您的视图在多个表上有全文索引,因此您将不能这样做。
您可以使用联合来检查视图中的两个表。
我现在无法访问 SQL 安装,但如果它有效,请告诉我。