Образовательный проект «SnakeProject» Михаила Козлова

Навигация

⇒ SQL\T-SQL ⇐

CISCO

Voice(Asterisk\Cisco)

Microsoft

Powershell

Python

FreeBSD and Nix

Общая

WEB Разработка

ORACLE SQL \ JAVA

Мото

Стрельба, пневматика, оружие

Саморазвитие и психология


T-SQL 2012: FREETEXT и CONTAINS - полнотекстовый поиск


SELECT lcid, name
FROM sys.fulltext_languages
ORDER BY name; 

CREATE TABLE tsql.dbo.Documents
(
  id INT IDENTITY(1,1) NOT NULL,
  title NVARCHAR(50) NOT NULL,
  docexcerpt NVARCHAR(100) NOT NULL
CONSTRAINT PK_id
   PRIMARY KEY CLUSTERED(id)
);

INSERT INTO tsql.dbo.Documents
(title, docexcerpt)
SELECT N'Title English', 
 N'English Text';

INSERT INTO tsql.dbo.Documents
(title, docexcerpt)
SELECT N'Русский заголовок', 
 N'Русский текст';


CREATE FULLTEXT CATALOG search_catalog;

CREATE FULLTEXT INDEX ON tsql.dbo.Documents
 ( 
  title
     Language 1033,
  docexcerpt
     Language 1049    
 ) 
  KEY INDEX PK_id
      ON search_catalog; 

--Использование предиката CONTAINS (или CONTAINSTABLE) для нахождения точного или неточного (менее точного) совпадения 
--с отдельными словами и фразами, сходства слов на определенном расстоянии друг от друга или взвешенных совпадений. 
--При использовании предиката CONTAINS необходимо указать по крайней мере одно условие поиска, 
--в котором задается искомый текст и условия, определяющие совпадения.
--Использование предикатов FREETEXT (или FREETEXTTABLE) для поиска совпадения по смыслу, 
--а не буквального совпадения задаваемых слов, фраз или предложений (текст в свободной форме). 
--Соответствие регистрируется, если в полнотекстовом индексе указанного столбца найден любой из терминов в любой форме.

SELECT docexcerpt
FROM tsql.dbo.Documents
WHERE CONTAINS(docexcerpt, N'текст');

SELECT title, docexcerpt
FROM tsql.dbo.Documents
WHERE CONTAINS(docexcerpt, N'текст OR English');

SELECT docexcerpt
FROM tsql.dbo.Documents
WHERE CONTAINS(docexcerpt, N'Text AND NOT текст');

SELECT docexcerpt
FROM tsql.dbo.Documents
WHERE CONTAINS(docexcerpt, N'"En*"');

SELECT docexcerpt
FROM tsql.dbo.Documents
WHERE FREETEXT(docexcerpt, N'English language');

SELECT docexcerpt
FROM tsql.dbo.Documents
WHERE FREETEXT(docexcerpt, N'текст документа');


Комментарии пользователей

Эту новость ещё не комментировалиНаписать комментарий
Анонимам нельзя оставоять комментарии, зарегистрируйтесь!

Контакты Группа ВК Сборник материалов по Cisco, Asterisk, Windows Server, Python и Django, SQL и T-SQL, FreeBSD и LinuxКод обмена баннерами Видео к IT статьям на YoutubeВидео на другие темы Смотреть
Мои друзья: Советы, помощь, инструменты для сис.админа, статическая и динамическая маршрутизация, FreeBSD

© Snakeproject.ru создан в 2013 году.
При копировании материала с сайта - оставьте ссылку.

Рейтинг@Mail.ru
Рейтинг@Mail.ru Яндекс.Метрика





Поддержать автора и проект