Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.08.15;
Скачать: CL | DM;

Вниз

Поиск в предложении по комбинации букв   Найти похожие ветки 

 
V l a d i m i r   (2004-08-03 14:31) [0]

День добрый! У меня вот такой вопрос: необходимо предусмотреть возможность поиска предложения по комбинации букв (например, найти "вкусное яблоко", а в форме поиска задать только "око"). Каким образом можно перебрать буквы предложения и сопоставить их с ключом поиска?


 
Kurtevich   (2004-08-03 14:33) [1]

тю дык Pos("око", "вкусное яблоко");


 
Sergey_Masloff   (2004-08-03 14:35) [2]

Искать реализацию RegExp например
Или делать like "%xxx%"


 
V l a d i m i r   (2004-08-03 14:48) [3]

Я уточню: информация хранится в БД (Paradox) и выводится в DBGrid"е. Например, первая запись грида - сочный апельсин, вторая запись - вкусное яблоко и т.д. Задаю ключ поиска в форме поиска и необходимо найти ту запись, в которой встречается данное словосочетание. Проще говоря, будут две переменные типа String, одна из которых хранит название текущей записи, а другая ключ поиска. С помощью какой процедуры можно проверить, встречается ли в данном предложении искомая комбинация или нет? Если нет, то я перехожу к следующей записи и повторяю проверку... Существует ли такая стандартная функция по поиску в предложении комбинации слов? СПАСИБО ЗА ПОМОЩЬ!


 
Sergey Kaminski ©   (2004-08-03 15:32) [4]

Pos


 
V l a d i m i r   (2004-08-03 16:27) [5]

Ок, спасибо! Осталось только проверить в работе... :)


 
[lamer]Barmaglot ©   (2004-08-03 17:14) [6]

Кошмар... А что-нибудь побыстрее Pos"а посоветовать никак? Он же напишет его в программу, а потом будет спрашивать, почему при 10000 записей он так долго ишет...


 
V l a d i m i r   (2004-08-03 17:20) [7]

> [lamer]Barmaglot ©


> А что-нибудь побыстрее Pos"а посоветовать никак?


Если есть что-нибудь побыстрее POS"a, то я всеми руками за и весь во внимании...


 
begin...end ©   (2004-08-03 17:43) [8]

КМП-поиск. Или, что лучше, алгоритм Боуера и Мура.

www.yandex.ru


 
Sergey Kaminski ©   (2004-08-03 17:47) [9]

[lamer]Barmaglot ©   (03.08.04 17:14) [6]
>
А что-нибудь побыстрее Pos"а посоветовать никак?

Посоветуй.


 
Sandman25 ©   (2004-08-03 17:49) [10]

А нефиг на форме иметь 10000 записей. Тут не фильтр нужен, а select c where.


 
[lamer]Barmaglot ©   (2004-08-03 17:54) [11]

Запросто, начиная с уже сказанного Боуэра-Мура и Карпа-Рабина, Бинарного поиска и заканчивая более новыми, которые надо искать в книжках и журналах. дома лежит книга в ней более 30 алгоритмов точного поиска подстроки в строке...

подробнее здесь: http://algolist.manual.ru/search/index.php


 
V l a d i m i r   (2004-08-03 17:58) [12]

> Sandman25 ©

Так оно и есть. В верхней части окна располагается TTreeView с ограниченным количеством уровней (4 уровень - корень дерева). Так вот именно записи 4 (самого нижнего уровня) отображаются в гриде в нижней части окна... Выделяя родителя в дереве, в гриде отображаются все его дочерние записи 4 левела. Собственно SQL-й запрос выводит сразу все записи только при открытии окна, те когда выделен самый верхний родительский уровень, а уже далее продвигаясь по дереву количество записей грида изменяется.

Собственно, я уже в дебри зашел... Мне просто нужно составить поисковичок. Если Pos подойдет, я его забираю! :)


 
Sergey Kaminski ©   (2004-08-03 18:05) [13]

[lamer]Barmaglot ©   (03.08.04 17:54) [11]
А это не мне, а автору ветки надо было посоветовать. А не ругаться на Pos.

V l a d i m i r   (03.08.04 17:58) [12]
Если Pos подойдет, я его забираю! :)

Пользуй на здоровье! Он ОБЩИЙ :)))


 
begin...end ©   (2004-08-03 18:19) [14]


> [11] [lamer]Barmaglot ©   (03.08.04 17:54)


> Бинарного поиска

Э-э... Ну, бинарный поиск для этой задачи, ИМХО, не катит. В общем случае, по крайней мере.


 
KADAN ©   (2004-08-03 23:03) [15]

DBGrid1.DataSource.DataSet.Locate("Fruit","око",[loPartialKey, loCaseInsensitive]);


 
TUser ©   (2004-08-04 06:38) [16]

Pos, а если по-умному - см. на алголисте алгоритм Кнута-Мориса-Пратта.



Страницы: 1 вся ветка

Текущий архив: 2004.08.15;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.059 c
1-1091258938
Antonmm
2004-07-31 11:28
2004.08.15
Открытие файла в RichEdit


3-1090581772
Fresh
2004-07-23 15:22
2004.08.15
Перекачка данных с индикатором прогресса


3-1090389271
sergt
2004-07-21 09:54
2004.08.15
обновление данных в DBGrid2


1-1091173196
Прог
2004-07-30 11:39
2004.08.15
Indy и кодировка


4-1089031212
sergeii
2004-07-05 16:40
2004.08.15
Как поменять текст в Edit-e