Freetext不会返回表中的所有单词。并且包含不起作用
我有一行包含在mycolumn =“国王的生活”中
我尝试了2种方法; 首先“包含”
SELECT * FROM MYTABLE WHERE CONTAINS(MYCOLUMN,'Life NEAR of NEAR a NEAR King')
它返回NOTHING
第二
SELECT * FROM MYTABLE WHERE FREETEXT(MYCOLUMN,'Life of a King')
它返回237行! 这是;
“馅饼的生活”,“这是一个美好的生活”,“狮子王”,“亚瑟王”,“生活故事”,“国王的生活”等...
我想要返回仅包含“Life”+“of”+“a”+“King”字样的行。
感谢您的回复!
答案 0 :(得分:0)
我假设全文字段是nvarchar。
以下是我的例子:
CREATE TABLE [dbo].[FullTextTable](
[ID] [int] NOT NULL PRIMARY KEY,
[FullTextField] [nvarchar](max) NOT NULL
);
GO
CREATE FULLTEXT INDEX ON FullTextTable([FullTextField])
KEY INDEX [PK_FullTextTable]
WITH STOPLIST = SYSTEM;
GO
以下查询返回准确值:
SELECT FullTextField
FROM FullTextTable
WHERE
CONTAINS
(FullTextField, N'"Life NEAR of NEAR a NEAR King"' );
GO
答案 1 :(得分:0)
您必须考虑以下几点
您要搜索的列应该有 FULLTEXT INDEX
检查表中是否存在搜索词
SELECT * FROM sys.dm_fts_index_keywords(DB_ID('your_DB_Name'), OBJECT_ID('_your_table_Name')) 其中 display_term 像 '%your_searching_keyword%'
“更改跟踪”属性应设置为“自动”。如果创建索引后要在表中添加或删除行或表中的数据不是静态的。