powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск подстроки в таблице
8 сообщений из 8, страница 1 из 1
Поиск подстроки в таблице
    #37083775
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi, All!

Задача:

Есть таблица с текстовым полем. Таблица меняется редко относительно поиска в ней. Хочется быстро находить записи, содержащие заданную подстроку. Т.к. подстрока может быть не только в начале текста, LIKE не будет эффективным.

Какие алгоритмы посоветуете?
...
Рейтинг: 0 / 0
Поиск подстроки в таблице
    #37083846
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064 , если "подстроки" имеют вполне определённые назначение - можно сделать индекс по ним... Или таблички типа

ПодстрокаКодЗначение
Строки содержащие подстрокуКодИД строки
...
Рейтинг: 0 / 0
Поиск подстроки в таблице
    #37083879
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Нет, подстрока произвольна.
...
Рейтинг: 0 / 0
Поиск подстроки в таблице
    #37084051
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 28.01.2011 11:20, x1ca4064 wrote:

> Какие алгоритмы посоветуете?

Какие ещё алгоритмы ? Полнотектовый поиск
нужно применять, full text search -индексы.
Они же R-tree.



Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Поиск подстроки в таблице
    #37084085
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064 , насколько "длинна" и "широка" та табличка?

Как вариант, предложил бы такой способ... Сделать некий "индекс" или опять же таблички такого вида:
- Значения полей строки просто склеиваются через некий разделитель
- Такие строки так же склеиваются в одну строку через еще один разделитель (количество строк ограничено конечно)
- Вся эта "каша" "порционально" записывается со ссылками на строки, в неё входящие

Строчная группаКодЗначение
Строки первоначальной таблицыКодИД строкиКод группы
Т.о. первоначальный поиск подстроки проводится по "строчным группам", выявляя предполагаемый список строк, её содержащий... Не дюже загнул?
Потом делается запрос к оригиналу, но уже с указанием ИД предполагаемых строк...

Понятна идея?
Х/з конечно какое там будет ускорение... Но как теория наверно сойдёт.
...
Рейтинг: 0 / 0
Поиск подстроки в таблице
    #37084089
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivнужно применять, full text search -индексы.
Они же R-tree.
Они есть в каждой СУБД?
...
Рейтинг: 0 / 0
Поиск подстроки в таблице
    #37084924
x1ca4064
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Спасибо за идею, сейчас обдумываю (то бишь пока не понял).

Данные, котрые могут быть существенны:

Кол-во записей в таблице: около 100 000 ( меньше, скорее всего)

Кол-во символов в поле : меньше 100

Кол-во символов в алфавите: примерно 100

Кол-во символов в подстроке: меньше 20
...
Рейтинг: 0 / 0
Поиск подстроки в таблице
    #37085789
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
x1ca4064сейчас обдумываю (то бишь пока не понял)
Хм...
Ну вот смотри... У тебя в индекс какой длинны можно значение запихмуть т.с. помаксимуму? У меня только 255 символов вообще на все про все...

Ну допустим у тебя их N... Тогда количество строк в "группе"

Код: plaintext
К=N/ 100 

Т.о. склеиваем поля из К-строк в одно значение и записываем его в первую мою табличку... А ссылки на ИД тех строк - вовторую... Ну и т.д.

Теперь поиск.
- Получаем подстроку
- Ищем её вхождение в моей первой табличке, тем самым получаем набор строк в оригинале
- Теперь уточняем в оригинале где таки встречается та подстрока, но уже по нашему перечню ИДшек, а не повсей табличе
Вот в этом может и будет выигрыш...

Если и теперьне понятно - выкладывай тестовый пример таблички, я покажу на нём.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск подстроки в таблице
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]