日期:2014-05-18  浏览次数:20666 次

全文检索:返回了意外的 '[FULLTEXT:mytable].KEY' 列值 NULL
具体提示:

务器:   消息   7342,级别   16,状态   1,行   1
返回了意外的   '[FULLTEXT:mytable].KEY '   列值   NULL(从   OLE   DB   提供程序   'Full-text   Search   Engine '   中)。此列不能是   NULL。
OLE   DB   错误跟踪[Non-interface   error:     Unexpected   NULL   value   returned   for   the   column:     ProviderName= 'Full-text   Search   Engine ',   TableName= '[FULLTEXT:mytable] ',   ColumnName= 'KEY ']。


---------------------------
1、mytable是启用全文检索的表
2、mytable表中不存在错误提示中的“KEY”列
3、全文检索服务启动时,曾提示缺少NTLMSSP服务,并且该服务并没有出现在服务列表中。后从另一台机器导注册表添加NTLMSSP服务
4、查询语句:select   Title   from   mytable   where   contains(title, ' "北京* " ')

原因及解决方法?

------解决方案--------------------
用select * from containstable(mytable,title, ' "北京* " ')试一下,
还有,你的title是全文索引列吗?
------解决方案--------------------
select Title from mytable where contains(title, ' "北京 " ')--去掉*

select Title from mytable where contains(title, ' "北京% " ')--用%

------解决方案--------------------
怀疑
全文检索服务启动时,曾提示缺少NTLMSSP服务,并且该服务并没有出现在服务列表中。后从另一台机器导注册表添加NTLMSSP服务
这个地方出错了,如果有环境在别人机器上测一下。
------解决方案--------------------
用select Title from mytable where Title is null or Title= ' '
看看结果
------解决方案--------------------
列的属性是不是text...
用FULLTEXT这个函数试试
------解决方案--------------------
select Title from mytable where contains(title,N ' "北京 " ')--加个N试试

select Title from mytable where contains(title,N ' "北京% " ')--加个N试试

FREETEXT
是个谓词,用于搜索含有基于字符的数据类型的列,其中的值符合在搜索条件中所指定文本的含义,但不符合表达方式。使用 FREETEXT 时,全文查询引擎内部将 freetext_string 拆分为若干个搜索词,并赋予每个词以不同的加权,然后查找匹配。

语法
FREETEXT ( { column | * } , 'freetext_string ' )

参数
column

已经注册全文检索的特定列的名称。具有字符串数据类型的列是可进行全文检索的有效的列。

*

指定所有已注册用于全文检索的列均用于搜索给定的 freetext_string。

freetext_string

要在指定的 column 中进行搜索的文本。可以输入任何文本,包括单词、短语或句子。所输入的文本与语法无关。

USE Northwind
GO
SELECT CategoryName
FROM Categories
WHERE FREETEXT (Description, 'sweetest candy bread and dry meat ' )

------解决方案--------------------
全文索引有没有启动自动填充
------解决方案--------------------
根据提示:
此列不能是 NULL?
楼主检查一下主键是否存在null
--有没有记录显示
select * from ta where 主键 is null
------解决方案--------------------
[KEY]--这是全文索引对应的表主键
可以这样对应查询:
USE Northwind
GO
SELECT K.RANK, CompanyName, ContactName, Address
FROM Customers AS C
INNER JOIN
CONTAINSTABLE(Customers,Address, 'ISABOUT ( "des* ",
Rue WEIGHT(0.5),
Bouchers WEIGHT(0.9)
)
'
) AS K
ON C.CustomerID = K.[KEY]