![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в предложении по комбинации букв
V l a d i m i r © (2004-08-03 14:31:00)День добрый! У меня вот такой вопрос: необходимо предусмотреть возможность поиска предложения по комбинации букв (например, найти "вкусное яблоко", а в форме поиска задать только "око"). Каким образом можно перебрать буквы предложения и сопоставить их с ключом поиска?
TUser (2004-08-04 06:38:00) [1]Pos, а если по-умному - см. на алголисте алгоритм Кнута-Мориса-Пратта.
KADAN (2004-08-03 23:03:00) [2]
DBGrid1.DataSource.DataSet.Locate('Fruit','око',[loPartialKey, loCaseInsensitive]);
begin...end (2004-08-03 18:19:00) [3]
> [11] [lamer]Barmaglot © (03.08.04 17:54)
> Бинарного поиска
Э-э... Ну, бинарный поиск для этой задачи, ИМХО, не катит. В общем случае, по крайней мере.
Sergey Kaminski (2004-08-03 18:05:00) [4][lamer]Barmaglot © (03.08.04 17:54) [11]
А это не мне, а автору ветки надо было посоветовать. А не ругаться на Pos.
V l a d i m i r (03.08.04 17:58) [12]
Если Pos подойдет, я его забираю! :)
Пользуй на здоровье! Он ОБЩИЙ :)))
V l a d i m i r (2004-08-03 17:58:00) [5]> Sandman25 ©
Так оно и есть. В верхней части окна располагается TTreeView с ограниченным количеством уровней (4 уровень - корень дерева). Так вот именно записи 4 (самого нижнего уровня) отображаются в гриде в нижней части окна... Выделяя родителя в дереве, в гриде отображаются все его дочерние записи 4 левела. Собственно SQL-й запрос выводит сразу все записи только при открытии окна, те когда выделен самый верхний родительский уровень, а уже далее продвигаясь по дереву количество записей грида изменяется.
Собственно, я уже в дебри зашел... Мне просто нужно составить поисковичок. Если Pos подойдет, я его забираю! :)
[lamer]Barmaglot (2004-08-03 17:54:00) [6]Запросто, начиная с уже сказанного Боуэра-Мура и Карпа-Рабина, Бинарного поиска и заканчивая более новыми, которые надо искать в книжках и журналах. дома лежит книга в ней более 30 алгоритмов точного поиска подстроки в строке...
подробнее здесь: http://algolist.manual.ru/search/index.php
Sandman25 (2004-08-03 17:49:00) [7]А нефиг на форме иметь 10000 записей. Тут не фильтр нужен, а select c where.
Sergey Kaminski (2004-08-03 17:47:00) [8][lamer]Barmaglot © (03.08.04 17:14) [6]
>
А что-нибудь побыстрее Pos'а посоветовать никак?
Посоветуй.
begin...end (2004-08-03 17:43:00) [9]КМП-поиск. Или, что лучше, алгоритм Боуера и Мура.
www.yandex.ru
V l a d i m i r (2004-08-03 17:20:00) [10]> [lamer]Barmaglot ©
> А что-нибудь побыстрее Pos'а посоветовать никак?
Если есть что-нибудь побыстрее POS'a, то я всеми руками за и весь во внимании...
[lamer]Barmaglot (2004-08-03 17:14:00) [11]Кошмар... А что-нибудь побыстрее Pos'а посоветовать никак? Он же напишет его в программу, а потом будет спрашивать, почему при 10000 записей он так долго ишет...
V l a d i m i r (2004-08-03 16:27:00) [12]Ок, спасибо! Осталось только проверить в работе... :)
Sergey Kaminski (2004-08-03 15:32:00) [13]Pos
V l a d i m i r (2004-08-03 14:48:00) [14]Я уточню: информация хранится в БД (Paradox) и выводится в DBGrid'е. Например, первая запись грида - сочный апельсин, вторая запись - вкусное яблоко и т.д. Задаю ключ поиска в форме поиска и необходимо найти ту запись, в которой встречается данное словосочетание. Проще говоря, будут две переменные типа String, одна из которых хранит название текущей записи, а другая ключ поиска. С помощью какой процедуры можно проверить, встречается ли в данном предложении искомая комбинация или нет? Если нет, то я перехожу к следующей записи и повторяю проверку... Существует ли такая стандартная функция по поиску в предложении комбинации слов? СПАСИБО ЗА ПОМОЩЬ!
Sergey_Masloff (2004-08-03 14:35:00) [15]Искать реализацию RegExp например
Или делать like '%xxx%'
Kurtevich (2004-08-03 14:33:00) [16]тю дык
Pos('око', 'вкусное яблоко');