Можно ли использовать ContactStable, чтобы получить результаты для более чем одного столбца?

StackOverflow https://stackoverflow.com/questions/2246295

Вопрос

Рассмотрим следующую таблицу:

Люди

  • FirstName Nvarchar (50)
  • Lastname nvarchar (50)

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

Давайте предположим, что я хотел найти всех людей по имени «Джон Смит» в этом столе. Следующий запрос кажется совершенно рациональным способом достижения этого:

SELECT * from People p
INNER JOIN CONTAINSTABLE(People,*,'"John*" AND "Smith*"')

К сожалению, это не даст результатов, предполагая, что в Люди Таблица, которая содержит как «Джон», так и «Смит» в столбцах первого или последнего имени. Он не будет соответствовать записи с «John» в столбце FirstName, и «Смит» в столбце LastName или наоборот.

Мой вопрос: как можно сделать то, что я пытаюсь сделать выше? Пожалуйста, учтите, что пример выше упрощен. Настоящая таблица, с которой я работаю, имеет десять столбцов, а вход, который я получаю, - это единственная строка, которая разделена на основе стандартных слов (пространство, Dash и т. Д.)

Это было полезно?

Решение 2

Вот что я закончил делать:

Пример, который я дал выше, мог быть немного упрощенным. В фактическом приложении полнотекстовый индекс фактически находится в представлении, который представляет соединение двух таблиц. Одним из преимуществ этого является то, что схема представления может быть независимой от таблицы (ов), из которых она построена.

Чтобы использовать мой (упрощенный) пример свыше, у меня есть таблица, которая выглядит так:

Люди

  • FirstName Nvarchar (50)
  • Lastname nvarchar (50)

Вид, из которого на самом деле построен индекс, выглядел так:

Peopleview

  • FirstName Nvarchar (50)
  • Lastname nvarchar (50)

Чтобы обойти эту проблему, я изменил схему представления, чтобы теперь имелся один столбец (плюс ключ), который содержит содержимое всей таблицы, представленных представлением:

Peopleview

  • Имя (FirstName + '' + LastName)

Полнотекстовый каталог должен был быть восстановлен, конечно, с учетом новой схемы представления, но все изменения были внесены на уровне базы данных, что означало никаких изменений в код приложения. Мне пришлось внести несколько настройки в вид, чтобы обрабатывать столбцы, которые могут иметь нулевые значения, поскольку нулевые объединены с чем угодно = NULL.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top