0

自由文本不会返回表格中的所有单词。并且包含不起作用

我有一排包含在 mycolumn="Life of a King" 中

我尝试了2种方法;第一个“包含”

SELECT * FROM MYTABLE WHERE CONTAINS(MYCOLUMN,'Life NEAR of NEAR a NEAR King')

它什么都不返回

第二:

SELECT * FROM MYTABLE WHERE FREETEXT(MYCOLUMN,'Life of a King')

它返回 237 行!这是;

《派的生活》、《美好生活》、《狮子王》、《亚瑟王》、《人生故事》、《国王的生活》等……

我想返回仅包含“Life”+“of”+“a”+“King”单词的行。

感谢您的回复!

4

2 回答 2

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
于 2014-07-15T00:30:22.177 回答
0

您必须考虑以下几点

  1. 您正在搜索的列应该有 FULLTEXT INDEX

  2. 检查表中是否存在搜索词

    SELECT * FROM sys.dm_fts_index_keywords(DB_ID('your_DB_Name'), OBJECT_ID('_your_table_Name')) where display_term like '%your_searching_keyword%'

  3. “更改跟踪”属性应设置为“自动”。如果在创建索引后要从表中添加或删除行,或者表中的数据不是静态的。

于 2021-02-02T07:21:25.657 回答