Календарь на Май 2024 года: calendar2008.ru/2024/may/
Навигация
Главная »  Sql 

Основы полнотекстового поиска


Источник: realcoding
Основы полнотекстового поиска
Я создал полнотекстовый индекс в таблице и у меня есть несколько вопросов о возможностях компонента полнотекстового поиска в SQL Server. Во-первых, работает ли полнотекстовый поиск с суффиксами (т.е. можно ли по фразе * mation  отыскать такое слово, как  information )? Во-вторых, можно ли с помощью полнотекстового поиска находить слова, расположенные рядом друг с другом? Если да, то сколько слов максимально могут разделять искомые слова? В-третьих, как модифицировать список "словесного шума"?

На первый вопрос ответ следующий: непосредственно использовать поиск по суффиксу нельзя. Однако это ограничение можно обойти двумя способами. Во-первых, с помощью предиката LIKE в выражениях типа WHERE mytext LIKE N'%suffix ' . Однако использование LIKE приводит к сканированию всех строк таблицы, в которой проводится поиск, и это может сказаться на производительности. Во-вторых, можно продублировать и проиндексировать данные в обратном порядке (т.е. imagination становится  noitanigami ), а затем выполнить поиск по  noitani* .

Ответ на второй вопрос - да,  поиск с зазором ( proximity search  - вид поиска, при котором пользователь указывает, на каком расстоянии друг от друга должны располагаться ключевые слова в документе) возможен. Вот пример использования такого поиска:

USE pubs GO SELECT title, notes FROM titles WHERE CONTAINS (notes, 'user NEAR computers') GO 
Вы можете использовать знак тильды (~) и различные сочетания постфиксных операторов. Дополнительную информацию по этому вопросу можно найти в статье "Searching for Words or Phrases Close to Another Word or Phrase (Proximity Term)" в SQL Server  Books Online  -  BOL . Оценочные значения, которые возвращаются при поиске, зависят от ключевого слова NEAR. Если использовать оператор CONTAINSTABLE, то можно получить эти оценочные значения и продолжить эксперимент с поиском.

Для ответа на третий вопрос вспомним, что символы разрыва слов - это неотъемлемая часть используемого языка программирования, и вы можете модифицировать список  словесного шума  ( noise-word ). Словесный шум - это слова, которые автоматически исключаются из запроса на полнотекстовый поиск. Например, из обычного запроса исключаются слова типа  a, and, the . В статье "Full-Text Index and Querying Concepts" в  BOL  поясняется, как изменить список словесного шума. Необходимо быть внимательным при модификации списка, так как если допустить в запросе большее количество слов, размер индекса может сильно возрасти.



 

 Моделирование и проектирование баз данных в информационных системах. Часть 4.
 Том Кайт: о разделении, расщеплении и удалении (On Sharing, Splitting, and Deleting, By Tom Kyte).
 Поиск курса валюты. SQL-запрос в Oracle..
 Аналитические функции в Oracle (Часть 1).
 Защита на уровне строк - Часть 2: Правила защиты.


Главная »  Sql 

© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено.