Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
У меня база с текстовыми данными.

Нужно организовать поиск по вхождению слов в предложение (или хотя бы в параграф).
Как можно это сделать?
17 апр 12, 14:50    [12427769]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
tpg
Member

Откуда: Novosibirsk
Сообщений: 23902
Например, через LIKE
17 апр 12, 14:54    [12427803]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
В условии поиска несколько слов. В результате мы должны иметь только те тексты, в которых эти слова находятся в одном предложении или в одном параграфе.

В базе более 80000 текстов. Во-первых Использование Like замедлит поиск, и во вторых с LIKE невозможно задать начало и конец предложения или параграфа.
17 апр 12, 15:06    [12427905]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
Glory
Member

Откуда:
Сообщений: 104751
AVRob
невозможно задать начало и конец предложения или параграфа.

А у вас начало/конец предложение и параграфа отмечены какими спецсимволами ?
17 апр 12, 15:09    [12427924]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
Тексты хранятся в обычном виде. Ни какие спец символы не обозначают начало или конец предложения. Только после каждого параграфа ПСВК (#13#10).
17 апр 12, 15:18    [12427996]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
Glory
Member

Откуда:
Сообщений: 104751
AVRob
Ни какие спец символы не обозначают начало или конец предложения.

И как же тогда искать "в одном предложении", если неизвестно, где оно начинается и где заканчивается ?
17 апр 12, 15:24    [12428049]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
параграфы заканчиваются на ПСВК. и Начинаются тоже на ПСВК.

Предложения начинаются с ПСВК или после знака точка '.' и заканчиваются со знаком '.'.
17 апр 12, 15:28    [12428068]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
Glory
AVRob
невозможно задать начало и конец предложения или параграфа.

А у вас начало/конец предложение и параграфа отмечены какими спецсимволами ?


А если начало/конец предложение и параграфа были бы отмечены какими спецсимволами, тогда для этого случая у вас есть решение ?
17 апр 12, 15:35    [12428147]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
Glory
Member

Откуда:
Сообщений: 104751
Сервер осуществляет поиск в символьных/бинарных полях
Если вы хотите искать только в части поля, то вам придется самому распарсить поле на столько частей, сколько вам нужно. И по нужному вам алгоритму
17 апр 12, 15:35    [12428151]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
у нас сейчас есть алгоритм этого поиска - в два этапа.

1. с помощью CONTAINS получаем результат - тексты содержащие введенные в условии поиска слова
2. в найденных текстах программно (без участия SQL) проверяется нахождение этих слов в одном предложении.

Хотелось и второй этап организовать с помощью MSSQL.

Может в таблицах FTS есть нужная информация? Где можно найти более подробную информацию о таблицах FTS? Инфо в MSDN нет нужной мне информации.
17 апр 12, 15:49    [12428298]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
AVRob,

Многоточие - это три предложения?
Предложение может заканчиваться восклицательным знаком, вопросительным знаком и их комбинациями?
Пока Ваша задача не слишком-то формализована.

Скорость от LIKE можно ожидать, если вручную поддерживать индексацию: http://www.gotdotnet.ru/blogs/DeColores/1914/
Или полнотекстовый поиск, если скормить ему предложения и параграфы

Как порубить строку по разделителям - поищите по форуму.
Много раз встречалось. Вплоть до готовых функций.
Но это LIKEом - не быстро...
17 апр 12, 15:51    [12428308]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
AVRob
у нас сейчас есть алгоритм этого поиска - в два этапа.

1. с помощью CONTAINS получаем результат - тексты содержащие введенные в условии поиска слова
2. в найденных текстах программно (без участия SQL) проверяется нахождение этих слов в одном предложении.

Хотелось и второй этап организовать с помощью MSSQL.

Может в таблицах FTS есть нужная информация? Где можно найти более подробную информацию о таблицах FTS? Инфо в MSDN нет нужной мне информации.
То есть, вопрос в том, как порезать строку на несколько записей по разделителям?
17 апр 12, 15:52    [12428321]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
iap
AVRob
у нас сейчас есть алгоритм этого поиска - в два этапа.

1. с помощью CONTAINS получаем результат - тексты содержащие введенные в условии поиска слова
2. в найденных текстах программно (без участия SQL) проверяется нахождение этих слов в одном предложении.

Хотелось и второй этап организовать с помощью MSSQL.

Может в таблицах FTS есть нужная информация? Где можно найти более подробную информацию о таблицах FTS? Инфо в MSDN нет нужной мне информации.
То есть, вопрос в том, как порезать строку на несколько записей по разделителям?
Ну, вот, например.
Или вот: 11483014

aleks2 свою функцию несколько раз публиковал.
Были варианты и без функции
17 апр 12, 15:58    [12428380]     Ответить | Цитировать Сообщить модератору
 Re: Как организовать текстовый поиск по вхождению слов в предложение или параграф?  [new]
AVRob
Member

Откуда: Армения, Ереван
Сообщений: 101
Спасибо за советы и ссылки. это наверное то что мне нужно.
17 апр 12, 16:52    [12428801]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить