Поиск по ключевому слову и получение столбца, где оно было найдено? - PullRequest
0 голосов
/ 29 октября 2010

У меня есть несколько таблиц, например: Car (id, NameCar) и Person (id, PersonName, Address и т. Д.)

Мне нужно найти ключевое слово и сказать, в каких столбцах я его нашел.

Пример. Поиск Civic, возвращение лица с идентификатором 10, у которого есть Civic, в поле «Имя автомобиля» и «Имя адреса».

Как я могу сделать это с хорошей производительностью?

Ответы [ 3 ]

1 голос
/ 29 октября 2010

Я не уверен, как показатели производительности с другими опциями, но когда нам понадобился такой тип функции, мы создали полнотекстовый каталог.Вы можете найти эту функцию в SSMS в [DatabaseName] - Хранилище - Полнотекстовые каталоги.Определите, какие поля вы хотите проиндексировать, а затем дайте ему построить.Затем вы можете выполнить запрос по индексу.

Вот хорошая статья в дополнение к моему ужасному описанию: http://www.developer.com/db/article.php/3446891/Understanding-SQL-Server-Full-Text-Indexing.htm

1 голос
/ 29 октября 2010

сделать представление, которое содержит все соответствующие столбцы.затем запросите это представление.

это поможет показать конкретные значения данных и ожидаемые результаты.

поочередно вы можете использовать структуру с UNION и указать, из какого объединения получена строка ..:

select name, 1 from person where name like '%civic%'
union
select street,2 from address where street like '%civic%'

..

и т. Д.

0 голосов
/ 12 ноября 2010

Я использовал полнотекстовый индекс для повышения производительности:

SELECT
    A.UserId,
    CASE WHEN CONTAINS(C.nm_colaborador, @palavraChave) THEN CAST(1 as bit) ELSE CAST(0 as bit) END As Nome,
    CASE WHEN CONTAINS(C.dc_cidades, @palavraChave) THEN CAST(1 as bit) ELSE CAST(0 as bit) END As Cidade
FROM
    Curriculo A
    INNER JOIN CONTAINSTABLE(Curriculo_Busca, *, @palavraChave) B ON A.UserId = B.[KEY]
    INNER JOIN Curriculo_Busca C ON B.[KEY] = C.UserId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...