Sql 使用FTS查询,您是否可以找到包含';abc&x27;
我不熟悉全文搜索,如何在下面的查询中使用Contains而不是like来执行搜索Sql 使用FTS查询,您是否可以找到包含';abc&x27;,sql,sql-server,tsql,full-text-search,Sql,Sql Server,Tsql,Full Text Search,我不熟悉全文搜索,如何在下面的查询中使用Contains而不是like来执行搜索 Select * From Students Where FullName LIKE '%abc%' 谢谢类似于: SELECT * From Students Where CONTAINS(FullName,'abc') 检查上次使用此脚本填充目录的时间: DECLARE @CatalogName VARCHAR(MAX) SET @CatalogName = 'FTS_Demo_Catalog'
Select * From Students Where FullName LIKE '%abc%'
谢谢类似于:
SELECT * From Students Where CONTAINS(FullName,'abc')
检查上次使用此脚本填充目录的时间:
DECLARE @CatalogName VARCHAR(MAX)
SET @CatalogName = 'FTS_Demo_Catalog'
SELECT
DATEADD(ss, FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateCompletionAge'), '1/1/1990') AS LastPopulated
,(SELECT CASE FULLTEXTCATALOGPROPERTY(@CatalogName,'PopulateStatus')
WHEN 0 THEN 'Idle'
WHEN 1 THEN 'Full Population In Progress'
WHEN 2 THEN 'Paused'
WHEN 3 THEN 'Throttled'
WHEN 4 THEN 'Recovering'
WHEN 5 THEN 'Shutdown'
WHEN 6 THEN 'Incremental Population In Progress'
WHEN 7 THEN 'Building Index'
WHEN 8 THEN 'Disk Full. Paused'
WHEN 9 THEN 'Change Tracking' END) AS PopulateStatus
FROM sys.fulltext_catalogs AS cat
您可能需要重新填充全文索引以查看当前结果。如果定义了FTS列,然后将数据加载到表中,则搜索索引不是最新的
如果您需要定期更新此内容,请访问Tech Net如果“abc”与您真正想要的内容部分匹配,请更改您的CONTAINS语句,如下所示:
SELECT *
FROM Students
WHERE CONTAINS(FullName, '"abc*"')
或
来源:我认为这是不正确的,我插入了三条类似“abc bbb 123”的记录,并尝试了该查询。它返回03行。因为FTS在单词边界上工作。然而,LIKE查询返回1100条记录!!这可能不是查询本身的问题,而是目录索引选项的问题。1) 您是否设置了FTS目录计划?2)上次运行是什么时候?索引已填充,我认为没有问题!!但是你如何验证呢?看我回答中的图片。我不确定您是否可以看到“上次更新”值,除非您设置了时间表。但是你可以重新填充它,然后再测试一次。我不知道“安踏Beteftiya”是什么意思。但我意识到我的代码中有一个拼写错误,我写的是“FORM”而不是“FROM”。再试一次?另外,在你的相关帖子“为什么我要麻烦使用全文搜索?”@,你提到有数百万条记录。数百万行的索引过程可能需要数小时。您需要后退一分钟,确保1)插入行后已填充目录,2)如果刚刚开始填充目录,则确保它已实际完成。
SELECT *
FROM Students
WHERE CONTAINS(FullName, '"*abc*"')