Проблема полнотекстовой индексации SQL - PullRequest
1 голос
/ 09 апреля 2010

ОБНОВЛЕНИЕ: Я нашел способ использовать форму динамического sql для решения этой проблемы, в любом случае спасибо за любую помощь.

Привет, есть кое-что, что мне нужно сделать с использованием полнотекстового индексирования. Вот оно:

В том-то и дело, что когда я запускаю запрос (с хранимой процедурой), который выглядит следующим образом (с параметром (@name), который был явно определен выше (не показан здесь), этот параметр отправляется в хранимую процедуру на странице asp.net, из пользовательского ввода):

SELECT

Имя

FROMdbo.UsersTable

ГДЕ

FREETEXT (Имя, @ имя)

Ну, в том-то и дело, что такой запрос будет возвращать значения, если, скажем, значением параметра @ name является Joe, и, скажем, есть 10 записей имен с Джо в них, но если значение @ name равно только Джо, тогда ничего не возвращается, и это проблема. Скажем, что в этой таблице есть другие записи, в которых есть Джо, например, Джоул или Джон.

Таким образом, реальный вопрос заключается в том, как заставить его возвращать значения, которые не являются полными словами или фразами, а только частью слова / фразы (как я уже говорил выше)? Как и FREETEXT (Name, @ name *), который нельзя использовать в качестве запроса, но вы поняли идею.

Есть ли способ сделать это? Я уверен, что должно быть, мне нужно это выяснить.

Спасибо за любую помощь.

1 Ответ

2 голосов
/ 10 апреля 2010

Полнотекстовый поиск действительно предполагается использовать как поиск на естественном языке, основанный на целых словах, однако вы можете использовать его для поиска суффиксов слов (не подстрок), используя CONTAINS с шаблоном в форме "Jo*"

SELECT Name FROM dbo.UsersTable WHERE CONTAINS(Name, '"' + @NAME + '*"')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...