Проект «SnakeProject» Михаила КозловаРегистрация

Навигация
⇒SQL\T-SQL⇒

⇐CISCO
⇐Voice(Asterisk\Cisco)
⇐Microsoft
⇐Powershell
⇐Python
⇐FreeBSD and Nix
⇐1С
⇐Общая
⇐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'текст документа');


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

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

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


Яндекс.Метрика

Goon Каталог сайтов Рейтинг@Mail.ru