У меня есть таблица Products в базе данных SQL Server, и мне приходится устранять неполадки устаревшей хранимой процедуры, использующей полнотекстовое индексирование Для наших целей давайте предположим, что таблица Products имеет два поля ID, Keywords. И поле Ключевые слова заполняется следующим:
ROLAND SA-300 Этот Roland SA-300 является
в состоянии MINT!
Когда я запускаю следующую инструкцию, я могу получить запись:
SELECT * FROM Products WHERE Keywords LIKE '%SA-300%'
Однако, когда я выполняю любое из следующих утверждений, я получаю нулевые результаты:
SELECT * FROM Products WHERE CONTAINS(Keywords, ' SA-300 ')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'SA-300')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"SA-300"')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"*SA-300*"')
Но я знаю, что функция CONTAINS () работает, потому что я получаю результаты при запуске любого из них:
SELECT * FROM Products WHERE CONTAINS(Keywords, ' Roland ')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'Roland')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"Roland"')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"*Roland*"')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'Roland')
Мне нужно выяснить, почему функция CONTAINS () не работает с термином SA-300. Я новичок в полнотекстовых индексах, поэтому любая помощь приветствуется.