На каком поле было найдено ключевое слово? SQL поиск - PullRequest
0 голосов
/ 20 декабря 2009

Я пытаюсь создать детальную поисковую систему для моего сайта.
Ключевые слова ищутся в нескольких полях и таблицах. Например, используя ключевые слова:

  • Улудаг
  • университет

Эти ключевые слова ищутся в полях education, address, contactname и contactsurname в моей таблице Members.

Я должен сделать это, потому что для пользователя должно быть только одно поле ввода.

Пока все в порядке, я хочу показать пользователю, в каком поле было найдено это ключевое слово? Я хочу показать поле с именем "Хиты".

Я использую SQL Server 2008 и полнотекстовый поиск.

Вы можете увидеть пример того, что я хочу сделать, в разделе расширенного поиска xing.

1 Ответ

2 голосов
/ 20 декабря 2009

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

SELECT ...
FROM Members
WHERE CONTAINS((education, address, contactname, contactsurname), 'uludag');

Но если вы хотите выполнить поиск в определенном поле, вам нужно указать только интересующее вас поле:

SELECT...
FROM Members
WHERE CONTAINS(education, 'uludag');

Вы можете объединить несколько полей и сохранить поле происхождения, объединив несколько запросов:

SELECT 'education' as [field origin],... 
FROM Members
WHERE CONTAINS(education, 'uludag')
UNION ALL
SELECT 'address', ...
FROM Members
WHERE CONTAINS(address, 'uludag')
...
UNION ALL
SELECT 'contactsurname', ...
FROM Members
WHERE CONTAINS(contactsurname, 'uludag');

И, наконец, вы можете использовать первую форму (поиск по всем полям сразу), а затем проверить на клиенте, в каком поле содержатся условия поиска.

...