Предикат полнотекстового поиска
Функция
Для выполнения полнотекстового поиска используется предикат полнотекстового поиска (расширение конструкции поискового оператора SELECT языка SQL).
Спецификация
::=
::=
::=
::=
Синтаксические правила
-
< Имя столбца >
должно принадлежать столбцу, по которому построен фразовый индекс. -
Модификаторы (по умолчанию отсутствуют) перечисляются в любом порядке и разделяются пробелами.
Общие правила
В таблице 4 представлены значения модификаторов и их назначение.
Модификатор | Назначение | Представление в шаблоне | Местоположение в шаблоне | Пример |
---|---|---|---|---|
SENSITIVE | Задает чувствительный к регистру поиск | # | Перед словом | #Word |
PARTIALLY | Задает поиск документов, в которых обозначенный шаблон поиска может встречаться в любом месте слова | * | В начале и конце | *WORD* |
AT_BEGIN | Задает поиск документов, в которых обозначенный шаблон поиска может встречаться только в начале слов | * | В конце | WORD* |
AT_END | Задает поиск документов, в которых обозначенный шаблон поиска может встречаться только в конце слов | * | В начале | *WORD |
FUZZY | Задает нечеткий поиск | % | Перед словом | %WORD |
Под «словом» понимается собственно слово, имя и значение атрибута.
При задании модификатора соответствующий специальный символ (см. столбец «Представление в шаблоне» в таблице 4) применяется ко всем словам шаблона полнотекстового поиска.
Если модификатор должен быть применен не ко всем словам искомого документа, следует использовать специальный символ (см. столбец «Представление в шаблоне» в таблице 4) для конкретных слов поискового запроса.
Примеры
а) поиск отдельных слов c учетом регистра букв
Конструкция
select id_doc from "ph" where text_doc contains '#БД #ЛИНТЕР';
эквивалентна
select id_doc from "ph" where text_doc contains sensitive 'БД ЛИНТЕР';
б) поиск без учета регистра (выдаются все документы с фразами «бд», «БД» «ЛИНТЕР», «Линтер» и т.п.)
select id_doc from "ph" where text_doc contains 'БД линтер';
Режим нечеткого поиска позволяет искать лексикографически близкие фразы, отличающиеся заменами, пропусками и вставками символов. Нечеткий поиск целесообразно применять при поиске слов с опечатками, а также в тех случаях, когда возникают сомнения в правильном написании – фамилии, названия организации и т.п.
в) следующий запрос выдаст, в частности, документы с ошибочной фразой «спецальная»:
select id_doc from "ph" where text_doc contains fuzzy 'специальная';
Ниже приведены примеры фраз, которые могут быть найдены и пропущены при полнотекстовом поиске и степень их близости, подсчитанная с помощью SQL-функций soundex() и difference().
Исходный документ | Найденный документ | soundex() | difference() | |||
---|---|---|---|---|---|---|
Спецальная | ✔ | С167 | 0 | |||
Специальноя | ✔ | С167 | 0 | |||
Спициальная | ✔ | С167 | 0 | |||
Специалная | ✔ | С167 | 0 | |||
Sпециалная | S167 | 1 | ||||
Тпециалноя | T167 | 1 | ||||
Специа | С160 | 1 | ||||
Специальнаяя | ✔ | С167 | 0 |