Используя запрос FTS, можете ли вы найти все записи, содержащие "abc"

Я новичок в полнотекстовом поиске, как мне выполнить поиск с помощью Contains вместо использования, как в следующем запросе

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

Спасибо

3 ответа

Проверьте, когда ваш каталог был последний раз заполнен, используя этот скрипт:

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

Что-то вроде:

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

Ссылка на документацию MSDN

Если "abc" является частичным совпадением с тем, что вы действительно ищете, измените свое утверждение CONTAINS следующим образом:

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

ИЛИ ЖЕ

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

Источник: MSDN - СОДЕРЖИТ

Другие вопросы по тегам