3

我是全文搜索的新手,如何使用包含而不是在以下查询中使用 like 来执行搜索

Select * From Students Where FullName LIKE '%abc%'

谢谢

4

3 回答 3

2

检查您的目录上次使用此脚本填充的时间:

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 上的这篇文章

于 2012-05-08T18:34:28.157 回答
2

就像是:

SELECT * From Students Where CONTAINS(FullName,'abc')

链接到 MSDN 文档

于 2012-05-08T15:44:27.787 回答
0

如果“abc”与您真正想要的内容部分匹配,请更改您的 CONTAINS 语句,如下所示:

SELECT   * 
FROM     Students 
WHERE    CONTAINS(FullName, '"abc*"')

或者

SELECT   * 
FROM     Students 
WHERE    CONTAINS(FullName, '"*abc*"')

来源: MSDN - 包含

于 2012-05-08T19:07:59.077 回答