全文搜索无法在 SQL Azure 上的 XML 列上运行
Full Text Search not working on XML Columns on SQL Azure
因此 SQL Azure 最近发布了一项新功能,作为 V12 升级的一部分。您现在可以在您的数据库上实施全文搜索目录。
我已经按照设置说明创建了一个 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)
PopulateStatus
的 FULLTEXTCATALOGPROPERTY
报告它处于空闲状态。
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 !=''
因此 SQL Azure 最近发布了一项新功能,作为 V12 升级的一部分。您现在可以在您的数据库上实施全文搜索目录。
我已经按照设置说明创建了一个 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)
PopulateStatus
的 FULLTEXTCATALOGPROPERTY
报告它处于空闲状态。
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 !=''