SQL Server全文不索引XML数据

时间:2014-10-29 21:08:12

标签: sql-server xml sql-server-2008-r2 full-text-search

SQL Server 2008 R2 - 全文索引正在处理nvarchar列,但不在xml列上。它就像它无法索引xml值。我将下面的示例放在一起测试多个服务器,除了一个之外,它返回两个自由文本搜索的数据。在有问题的服务器上,我没有得到第二个select语句的结果(在xml列中查找)。我已经完成了我能找到的与FullText相关的所有设置,但是我没有看到任何启用/禁用XML的设置。

注意:有时需要在延迟后运行最后两个select语句。当您一次运行整个块时,似乎正在进行索引编制。

-- Create Table
CREATE TABLE [dbo].[a_TestFullText](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [otherdata] [varchar](250) NOT NULL,
    [xmldata] [xml] NOT NULL,
    CONSTRAINT [pk_TestFullText] PRIMARY KEY CLUSTERED 
(
    [id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]
GO

-- Populate Data
Insert Into dbo.a_TestFullText(xmldata, otherdata) Values
('<nodename>Ham Cheese Sandwich</nodename>', 'Strange'),
('<nodename>Potatoes</nodename>', 'Tony')
GO

-- Create Catalog 
Create FULLTEXT CATALOG TestFullText
GO

-- Create Index
Create FULLTEXT INDEX ON dbo.a_TestFullText(otherdata,xmldata) KEY INDEX [pk_TestFullText] ON [TestFullText]
GO

-- Populate Index
Alter FULLTEXT INDEX on dbo.a_TestFullText START FULL POPULATION;
GO

-- Check for results
Select *
From dbo.a_TestFullText
Where FreeText(otherdata, 'Strange')

Select *
From dbo.a_TestFullText
Where FreeText(xmldata, 'Potatoes')
GO

1 个答案:

答案 0 :(得分:1)

重新启动SQL Server服务后,它自行解决。在最初查看问题时,我们无法重新启动服务,但我们在第二天做了,问题就消失了。仍然不确定发生了什么或为什么。