我正在使用 SQL Server 2008 R2,并使用 CONTAINSTABLE ISABOUT() 来识别文档标题中的关键短语。但是,一个特定的关键短语会产生误报。他们的关键词是:“phc行业”(不带引号)。这是一些说明问题的示例代码:-
CREATE TABLE tmp_test (myidentifier nvarchar(30) NOT NULL, mytext varchar(max));
CREATE UNIQUE CLUSTERED INDEX test_key ON tmp_test(myidentifier);
CREATE FULLTEXT CATALOG tmp_test_cat;
CREATE FULLTEXT INDEX ON tmp_test(mytext) KEY INDEX test_key ON tmp_test_cat;
GO
INSERT tmp_test VALUES ('good case','Western p-h-c industry');
INSERT tmp_test VALUES ('bad case','competitive advertising industry');
GO
SELECT * FROM CONTAINSTABLE (tmp_test, mytext, 'ISABOUT ("p-h-c industry" WEIGHT (.8))') ORDER BY RANK DESC;
go
KEY RANK
------------------------------ -----------
Informational: The full-text search condition contained noise word(s).
good case 15
bad case 15
(2 row(s) affected)
我希望 SELECT * FROM CONTAINSTABLE() 只为“好案例”返回一行,因为存在完全匹配。但是,即使关键阶段“phc 行业”没有出现在坏案例文本中,它也会为“坏案例”返回一行。
任何人都可以建议修复或解决方法吗?我必须使用 CONTAINSTABLE() 来完成它,因为代码架构是围绕它构建的。谢谢