|
Динамический поиск
|
|||
---|---|---|---|
#18+
Всем доброго времени суток ! Есть такая задача , реализовать побуквенный вывод данных из базы , тоесть динамический. Например , юзер ввел "А" ему выдаются все записи из определенной таблицы , которые начинаются на "А", ввел юзер "АБ" , ему выдаю все записи начинающиеся на "АБ". Я чего-то не понимаю , или придется на каждое изменение строки , делать новый запрос в базу ? ... как-то уж совсем печально это выглядит , или возможно при вводе первого символа , получить на стороне сервера все записи начинающиеся с этой буквы , а дальнейший поиск делать по полученным , но это черевато проблемами , например придется отслеживать ситуации , когда строка становится пустой и на сервере обнулять текущие данные и делать новый запрос ... Да и вообще как-то печально выглядит , мож кто подскажет че делать ? ... Эта штука нужна для веб сайта ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2011, 22:04 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Erik0sпридется на каждое изменение строки , делать новый запрос в базу ? ... как-то уж совсем печально это выглядити в чём печаль? у вас юзер "войну и мир" будет в редактор ввода набирать? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2011, 22:12 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
egorychErik0sпридется на каждое изменение строки , делать новый запрос в базу ? ... как-то уж совсем печально это выглядити в чём печаль? у вас юзер "войну и мир" будет в редактор ввода набирать? Нет ) Просто думал , что есть более деликатное решение , которое бы уменьшало кол-во запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2011, 22:20 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Erik0s, в вебе так и есть. Можно усложнить проверкой скорости соединения, как в гугле-поиск (выключать чтобы не висло). ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2011, 22:39 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Erik0s, их не так уж и много надо, на самом-то деле. Как правило, 3-4 букв достаточно, чтобы сократить поиск до получения искомого или достичь пустого списка. Вполне себе, имхо, нормальное условие. Сервер БД и нужен для того, чтобы исполнять запросы, кмк :-)) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2011, 22:41 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
egorych, *Вполне себе, имхо, нормальное решение ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2011, 22:44 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Вы меня успокоили ) Спасибо ! ... |
|||
:
Нравится:
Не нравится:
|
|||
03.05.2011, 22:46 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Erik0sЯ чего-то не понимаю , или придется на каждое изменение строки , делать новый запрос в базу ? А кэширование зачем? Делаем кэш и радуемся. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 07:56 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Я плохо написал. Суть в том, что можно поставить кэш и спрашивать запросы оттуда. Во-вторых, искать не по одной букве, а по двум - сразу снизить количество запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 07:58 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
LeonidvА кэширование зачем? Делаем кэш и радуемся. Всё зависит от объема контента, который мы хотим покрыть кешем. P.S. Автор, смотрите в сторону "full text search". ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 08:27 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Можно ставить select ... limit N, где N зависит от длины поисковой строки. Чем короче, тем строде лимит. Еще полезно посылать запрос к БД не сразу после ввода символа, а с задержкой в 80-100 мс. Человек почти не чувствует это, зато, при быстром вводе, почти всегда дело доходит до ввода 2-3 символов. Величина задержки между вводом символов сокращается при вводе все более длинной строки. Ну и разные partial индексы никто не отменял.... ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 14:29 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Leonidv, просто, тормозит, обычно HTTP (не СУБД). А куда там кеш? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 17:20 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Petro123Leonidv, просто, тормозит, обычно HTTP (не СУБД). А куда там кеш? HTTP??? В смысле передача байтов по каналу или что? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 17:48 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Leonidv, ну да, транспорт. Т.е. передача результатов запроса в виде нового фильтрованного списка (гугл). Моментально работает кеш DevExpress на клиенте до 10 000 записей (перекачает всё на клиента (TCP)) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 18:01 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Petro123Leonidv, ну да, транспорт. Т.е. передача результатов запроса в виде нового фильтрованного списка (гугл). Моментально работает кеш DevExpress на клиенте до 10 000 записей (перекачает всё на клиента (TCP)) Передать 300 байт это жуткая задача для современных телекоммуникаций? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 20:30 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Leonidv, помилуйте, я не ответственный за ТЕЛЕкоммуникации :) Возьмите реальный пример гугл-поиск, и посмотрите КАК там всё это работает и скока там байт. Вам и МСУ указал на проблемы кэша. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 20:55 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Petro123, Объем там будет небольшой , в базе будет < 1000 записей , да и результаты мало пересекаются , в том смысле что , там будут фамилии , имена людей , после ввода 3-4 символов , уже список будет < 10 элементов. p.s. MCY спасибо за наводку ) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 22:14 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Erik0s, у Серверов есть такая шутка Если ты сервер, не суетись под клиентом (с) :) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 22:40 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Petro123, Надо будет запомнить ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 22:52 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Erik0sОбъем там будет небольшой , в базе будет < 1000 записей , да и результаты мало пересекаются , в том смысле что , там будут фамилии , имена людей , после ввода 3-4 символов , уже список будет < 10 элементов. и ради этого все затеяно? Оставьте сервер в покое. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 23:18 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
iscrafmErik0sОбъем там будет небольшой , в базе будет < 1000 записей , да и результаты мало пересекаются , в том смысле что , там будут фамилии , имена людей , после ввода 3-4 символов , уже список будет < 10 элементов. и ради этого все затеяно? Оставьте сервер в покое. Ну , жаль конечно , что по объемам гугл не догоняю )) Но все дело в мелочах ... Как говорится "мелочь , а приятно " ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 23:47 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Erik0siscrafmпропущено... и ради этого все затеяно? Оставьте сервер в покое. Ну , жаль конечно , что по объемам гугл не догоняю )) Но все дело в мелочах ... Как говорится "мелочь , а приятно " да гугл то здесь причем? Загружайте при таких объемах все на клиента и ищите там во всех возможных вариантах. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.05.2011, 23:57 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
iscrafm, Я Вас не так понял , сорри ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2011, 00:29 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
iscrafmОбъем там будет небольшой , в базе будет < 1000 записей Если данные редко изменяемы - кешируйте. P.S. Вот тут писал про архитектуру с кешированием: http://www.sql.ru/forum/actualthread.aspx?tid=819193 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2011, 08:51 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
МСУiscrafmОбъем там будет небольшой , в базе будет < 1000 записей Если данные редко изменяемы - кешируйте. P.S. Вот тут писал про архитектуру с кешированием: http://www.sql.ru/forum/actualthread.aspx?tid=819193 я этого не говорил ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2011, 09:45 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
iscrafmErik0sпропущено... Ну , жаль конечно , что по объемам гугл не догоняю )) Но все дело в мелочах ... Как говорится "мелочь , а приятно " да гугл то здесь причем? Загружайте при таких объемах все на клиента и ищите там во всех возможных вариантах. DevExpress \ ClientDataSet так и делает, только вот в веб, не знаю таких библиотек (1000 записей возле осла). Может в Net какой-нить WebDataSet и есть. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2011, 10:18 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
iscrafmя этого не говорил Утро :) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2011, 11:01 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Erik0sВсем доброго времени суток ! Есть такая задача , реализовать побуквенный вывод данных из базы , тоесть динамический. Например , юзер ввел "А" ему выдаются все записи из определенной таблицы , которые начинаются на "А", ввел юзер "АБ" , ему выдаю все записи начинающиеся на "АБ". Я чего-то не понимаю , или придется на каждое изменение строки , делать новый запрос в базу ? ... как-то уж совсем печально это выглядит , или возможно при вводе первого символа , получить на стороне сервера все записи начинающиеся с этой буквы , а дальнейший поиск делать по полученным , но это черевато проблемами , например придется отслеживать ситуации , когда строка становится пустой и на сервере обнулять текущие данные и делать новый запрос ... Да и вообще как-то печально выглядит , мож кто подскажет че делать ? ... Эта штука нужна для веб сайта Для любого MUMPS - сервера, это как два пальца... Искать с приближением можно хоть в миллиардах записей, на скорость это не влияет. При вводе символа "А" вероятнее всего нужно будет отобрать первые N-строк выборки, дальше приближаясь к намеченному отобрать уже меньший список, вплоть до единичного значения. Тем более что в старые времена поиск по справочникам всегда так и выполнялся. ...особенности MUMPS - технологии. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2011, 15:04 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
AlexKB, а не смущает то, что речь идет о веб-приложении? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2011, 15:29 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
iscrafm, Веб, он и в Африке Веб - не остоит отдавать клиенту всю выборку, только первые, скажем, 100 записей. Вопрос был в том, как на сервере ускорить контекстный поиск. Все MUMPSы с Вебом дружат. А там дело вкусов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2011, 16:36 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
AlexKBiscrafm, Веб, он и в Африке Веб - не остоит отдавать клиенту всю выборку, только первые, скажем, 100 записей. Вопрос был в том, как на сервере ускорить контекстный поиск. Все MUMPSы с Вебом дружат. А там дело вкусов. вы так и не поняли, что в десктопе (клиент-сервер) с этим вообще вопросов никаких нет. На любой БД . ... |
|||
:
Нравится:
Не нравится:
|
|||
05.05.2011, 17:07 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
Erik0sВсем доброго времени суток ! Есть такая задача , реализовать побуквенный вывод данных из базы , тоесть динамический. Например , юзер ввел "А" ему выдаются все записи из определенной таблицы , которые начинаются на "А", ввел юзер "АБ" , ему выдаю все записи начинающиеся на "АБ". Да помню эти штучки... Locator назывались, но не в Вебе Erik0sЯ чего-то не понимаю , или придется на каждое изменение строки , делать новый запрос в базу ? ... как-то уж совсем печально это выглядит , или возможно при вводе первого символа , получить на стороне сервера все записи начинающиеся с этой буквы , а Не факт. Вполне можно переложить на "приложение". Erik0sдальнейший поиск делать по полученным , но это черевато проблемами , например придется отслеживать ситуации , когда строка становится пустой и на сервере обнулять текущие данные и делать новый запрос ... Да и вообще как-то печально выглядит , мож кто подскажет че делать ? ... Эта штука нужна для веб сайта Если не хотите дергать БД (хотя по моему это самый быстрый вариант) То можно воспользоваться двумя путями. На стороне клиента - Пользуем динамическое формирование страницы Грузим всю таблицу в хеши. А потом по скрипту выводим. На стороне сервера - Пользуем AJAX и динамическое формирование страницы Запросы отправляем на сервер. Который посылает соответствующий набор данных. Так что сделать можно. Но из-за того, что будет использоваться усиленно JavaScript, то нагрузка на клиента будет сильной... Можно попробовать Java Applet's, ActiveX, SilverLight. Но ту свои "подводные камни" ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2011, 07:28 |
|
Динамический поиск
|
|||
---|---|---|---|
#18+
mad_nazgulНа стороне клиента - Пользуем динамическое формирование страницы Грузим всю таблицу в хеши. А потом по скрипту выводим. вы поделили по признаку клиент \ сервер. Если делить по Тонкий \ толстый, то размер данных хранимых на клиенте - 100 килобайт. ______________________________________________ "Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand. AutoPOI.ru — ГИС-технологии для Oracle ... |
|||
:
Нравится:
Не нравится:
|
|||
06.05.2011, 10:22 |
|
|
start [/forum/topic.php?all=1&fid=33&tid=1548053]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
64ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
others: | 301ms |
total: | 464ms |
0 / 0 |