Извините за плохой заголовок сообщения, но я не смог подвести итог этому лучше.Полный текстовый поиск по столбцам
Лучше использовать пример. Скажем, у меня есть эта простая таблица с двумя текстовыми столбцами (я оставляю остальные столбцы).
Id Text_1 Text_2
1 a a b
2 c a b
Теперь, если я хочу, чтобы искать «„а“, а не„Ъ“», в моей текущей реализации я получаю запись 1 назад. Я понимаю, почему это так, потому что условие поиска соответствует столбцу «Text_1», а для записи 2 это не соответствует ни одному столбцу.
Однако для конечного пользователя это может быть неинтуитивным, поскольку они, вероятно, означают, что большую часть времени также исключает запись 1.
Так что я хочу сказать, что SQL Server должен выполнить сопоставление «по всем столбцам» (это означает, что если часть «NOT» находится в ЛЮБОМ столбце, запись не должна совпадать), это возможное?
EDIT: Это то, что мой запрос будет выглядеть для этого примера:
SELECT Id, TextHits.RANK Rank, Text_1, Text_2 FROM simple_table
JOIN CONTAINSTABLE(simple_table, (Text_1, Text_2), '"a" and not "b"') TextHits
ON TextHits.[KEY] = simple_table.Id
ORDER BY Rank DESC
Фактический запрос является немного более сложным (больше столбцов, более соединений, и т.д.), но это общая идея :)
Спасибо!
@xurumunga. , , Можете ли вы привести пример текущего кода, который вы используете, что вы не думаете, что оно делает правильно? Кроме того, важна база данных как тега, потому что разные базы данных имеют разные преимущества для поиска текста. –
Спасибо @ Gordon за предложения. Я добавил запрос и тег. – xurumanga
есть миллион различных примеров, и это дубликат дубликата кажется: http://stackoverflow.com/questions/1796506/search-all-tables-all-columns-for-a-specific-value-sql- server – RandomUs1r