Реалізація повнотекстового пошуку в sql server

З чого почати.

Повнотекстовий пошук в SQL Server можна робити по текстових полів (char, varchar, text, ntext, nchar, або nvarchar).
Для підтримки повнотекстового пошуку неструктурованої текстової інформації в певній базі даних потрібно вміти вирішувати чотири основні завдання:
  1. Визначати таблиці і стовпчики, Зареєстровані для повнотекстового пошуку.
  2. Індексувати дані в зареєстрованих шпальтах.
  3. Створювати запити на пошук в зареєстрованих шпальтах, для яких заповнені повнотекстові індекси.
  4. Стежити за тим, щоб наступні зміни в зарегістріруемих шпальтах передавалися механізму індексування, щоб повнотекстові індекси завжди були узгоджені з даними.

Отже, у Вас є таблиця User. в якій є три колонки: Id (int) (простий первинний ключ, що реєструються таблиці повинні мати стовпець, значення якого гарантовано - унікально для кожного рядка), Name (text), Coment (text). Вам потрібно організувати повнотекстовий пошук по полях Name і Coment. Для початку потрібно зареєструвати таблицю, потім стовпчики, потім активувати таблицю і створити повнотекстовий індекс. Все це можна досягти декількома шляхами (за допомогою GUI, що надаються SQL Server Enterprise Manager або вручну, за допомогою збережених процедур). Я розгляну рішення за допомогою GUI.
1. Відкрийте SQL Server Enterprise Manager.
2. Виберіть базу даних, в якій знаходиться потрібна таблиця.
3. Виберіть Tools -> Full- Text Indexing ... З'явиться майстер налаштування для повнотекстового пошуку.

4. Створіть повнотекстовий каталог.

Може бути відсутнім, але якщо є, то вточності як написано.

Що ж ми отримаємо в результаті цього запиту?
Ми отримаємо таблицю, в якій є три стовпці, причому рядки в цій таблиці будуть упорядковані від найболее значущих. Це можна побачити з шпальти RANK, він і показує наскільки добре рядок задовольнила критерієм вибірки.

Функція FreetextTable ().
Використовується для повнотекстових запитів типу "freetext" і повертає оцінку відповідності для кожної знайденої рядки.
синтаксис:
FREETEXTTABLE (table, column. 'Freetext')
Ця функція використовується таким же чином, як і ContainsTable (), а умови пошуку як для предиката FREETEXT.

Приклад реалізації повнотекстового пошуку.

Отже, у нас є таблиця User. в якій є три колонки Id (int) (простий первинний ключ), Name (text), Coment (text). Вона зареєстрована для повнотекстового пошуку, активована і створений повнотекстовий індекс. Будемо вважати, що ми реалізували можливість використання російської та української мов для повнотекстового пошуку.
Що ж ми повинні реалізувати? Вообщем, все просто, є Web-сторінка, на якій є текстове поле і кнопка, вводячи текст в поле і клікаючи по кнопці, ми генеруємо повнотекстовий запит тексту, що вводиться, до таблиці User, по колонках Name і Coment. сортуємо за релевантністю (зменшенням) і виводимо знайдене у вигляді таблиці на сторінку, де перше значення - це значення релевантності, друге - Name і третє - Coment. Ще ми повинні створити можливість використання спецсимволов для генерації повнотекстових запитів. У нашому запиті ми можемо написати "програміст -тестіровщік" і в результаті повинні отримати всі рядки, в яких зустрічається слово "програміст" і немає слова "тестувальник". Тепер про спецсимволи:

Що означає оператор