Sql Server Полнотекстовый поиск Поиск в одном столбце результатов по нескольким столбцам - PullRequest
0 голосов
/ 20 января 2011

Я пытаюсь реализовать окно поиска автозаполнения (например, Google), используя SQL Server 2008 и полнотекстовый поиск.

Скажем, у меня есть 3 столбца, по которым я хочу выполнить поиск, и создал правильные индексы, а что нет.

Столбцами являются ProductName, ProductNumber и Color ...

Для пользовательского ввода я хочу найти возможные совпадения во всех трех столбцах и предложить правильный критерий поиска.

Так скажем, пользователь начинает печатать "Bl"

id хотел бы вернуть один столбец, содержащий результаты типа «Черный», «Синий», которые получены из столбца «Цвет», а также любые совпадения из двух других столбцов (например, ProductNumber: BL2300)

Так что в основном мне нужно искать по нескольким столбцам и возвращать один столбец в качестве результата. Есть ли способ сделать это?

Ответы [ 2 ]

4 голосов
/ 20 января 2011

ОБНОВЛЕНИЕ следующего комментария к оператору Если вы создали индекс FULLTEXT для разных столбцов, то вы можете просто использовать CONTAINS или FREETEXT, чтобы просмотреть один из них, все из них или некоторыеих.Например:

SELECT *
FROM YourTable
WHERE CONTAINS(*, @SearchTerm);

Если вы хотите просмотреть все столбцы, которые включены в ИНДЕКС ПОЛНОГО ТЕКСТА.или:

SELECT *
FROM YourTable
WHERE CONTAINS((ProductName, ProductNumber, Color), @SearchTerm);

Если вы хотите указать столбцы, которые вы хотите найти.Если вам нужны результаты в одном столбце, вам нужно будет выполнить UNION и выполнить поиск по каждому столбцу, который вы хотите найти.

    SELECT *
    FROM YourTable
    WHERE CONTAINS(ProductName, @SearchTerm)
    UNION
    SELECT *
    FROM YourTable
    WHERE CONTAINS(ProductNumber, @SearchTerm)
    UNION 
    SELECT *
    FROM YourTable
    WHERE CONTAINS(Color, @SearchTerm)
1 голос
/ 20 января 2011

Если вам не нужно связывать отдельные столбцы, что-то вроде

SELECT * FROM Table WHERE ProductName LIKE @SearchTerm + '%'
UNION
SELECT * FROM Table WHERE ProductNumber LIKE @SearchTerm + '%'
UNION
SELECT * FROM Table WHERE Color LIKE @SearchTerm + '%'

- хорошая точка для начала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...