全文搜索无法在 SQL Azure 上的 XML 列上运行

Full Text Search not working on XML Columns on SQL Azure

因此 SQL Azure 最近发布了一项新功能,作为 V12 升级的一部分。您现在可以在您的数据库上实施全文搜索目录。

http://azure.microsoft.com/blog/2015/04/30/full-text-search-is-now-available-for-preview-in-azure-sql-database/

我已经按照设置说明创建了一个 FTI pn a table,其中包含一个 XML 数据列。

CREATE FULLTEXT CATALOG recordDataCatalog AS DEFAULT;
CREATE FULLTEXT INDEX ON RecordData(Data) KEY INDEX PK_RecordData ON recordDataCatalog; 
ALTER FULLTEXT INDEX ON RecordData ENABLE; 
GO 
ALTER FULLTEXT INDEX ON RecordData START FULL POPULATION; 

设置顺利;它很大table(~0.5m 行)所以我把它放了一夜,第二天又回来了。

看起来已经完成了。但是在 XML 中搜索已知字符串没有返回任何结果。

SELECT * FROM RecordData WHERE Contains(Data, 'formsof(freetext, john)')
(0 row(s) affected)
SELECT * FROM RecordData WHERE Contains(Data, 'john')
(0 row(s) affected) 

PopulateStatusFULLTEXTCATALOGPROPERTY 报告它处于空闲状态。

table 的行数与目录中的项目数相同。

select count(id) from recorddata
------------------------------------------
(No column name)
539726
------------------------------------------
SELECT FULLTEXTCATALOGPROPERTY('recordDataCatalog','ItemCount')
----------------------------------------- 
(No column name)
539726

我注意到的一件奇怪的事情是索引关键字似乎 missing/not 填充正确。

SELECT * FROM sys.dm_fts_index_keywords(
    DB_ID('TransomTest'), 
    OBJECT_ID('RecordData'))
------------------------------------------------------
keyword display_term    column_id   document_count
0xFF    END OF FILE     2           539726

任何人都知道下一步要去哪里。大多数关于 FTS 和 XML 的 SQL 文档都说这应该有效,并且单词列表应该根据 XML 标记边界进行解析。考虑到此功能的新功能,特定于 Azure 的文档不存在。

xml 尚不支持文档类型索引,目前正在进行支持此功能的工作。可以使用以下方式查询当前支持的文档类型列表:

select * from sys.fulltext_document_types where version !=''