Нечеткий поиск в БД

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 15.07.2004 (Чт) 13:05

Вопрос тупиковый adUseClient


Ведь знаешь :P

Ну и при чем тут тогда скорость по сетке - один раз данные таблички прочитать?
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 15.07.2004 (Чт) 13:21

Cn.CursorLocation = adUseClient
CursorLocation - как понимаю, указатель текущей записи, ну тот, что как бы самому провайдеру принадлежит (короче курсор) либо юзать клиентский, либо сервака.
Просто никогда не смотрел на опыте разницу - это было всего лишь предположение.
Значит, говоришь клиентский курсор быстрее. Ок.

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 15.07.2004 (Чт) 15:50

Короче вот так вот! Блин! :shock: :D :D
Вложения
Demo.rar
(57.87 Кб) Скачиваний: 68

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 15.07.2004 (Чт) 16:02

Короче вот так вот! Блин!


Ищет-то не так как надо, например:

Введено для поиска: Chug
Должны найтись: Chai, Chang

А у тебя вообще ничего не найдется...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 15.07.2004 (Чт) 16:34

Вообще, жаль что не видно автора - не у кого спросить 8)

Но даже, если и так, это поправить легко. Я говорю про саму методу: зачем писать функции, если SQL для поиска с головой хватает и скорость гораздо выше, чем у самодельных функций на VB?

Ну где же он?! Некому рассудить нас. 8).

Поэтому признаю, что твой поиск неплох и даже очень хорош, но медленно работатет. Поэтому надо думать что-то с SQL :twisted: :lol:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.07.2004 (Чт) 16:53

Не поможет тут SQL, у него вполне определенные задачи и область применения. А эта задача выходит за его рамки, надо использовать пользовательскую функцию. Ее можно использовать в своей проге (клиентский курсор), либо на сервере, в таком случае сервер должен быть (например) MS SQL.
Lasciate ogni speranza, voi ch'entrate.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 15.07.2004 (Чт) 16:53

Вообще, жаль что не видно автора - не у кого спросить


Пропал куда-то...

Я говорю про саму методу: зачем писать функции, если SQL для поиска с головой хватает и скорость гораздо выше, чем у самодельных функций на VB?


В Access-e подобную функцию не написать. Можно написать на SQL-сервере, но быстрей она от этого не будет - чудес не бывает.

Сомневаюсь что сильно быстрей будут и аналогичные средства самого SQL. Точнее они могут быть быстрей только за счет более удачного алгоритма и более быстрой и незагруженной машины сервера, но тут уже надо смотреть.

Ну и в конце-концов Автор хотел быстрее 30 секунд - дык условие выполнено - получили около 3 секунд.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 16.07.2004 (Пт) 10:31

В Access-e подобную функцию не написать.
:shock: :?

Не догоняю. Почему?
(Я плохо представляю, что нельзя сделать в Access такого, что можно сделать в SQL-сервер по скольку все-таки больше работаю с Accessom :?).
Будет время - попробую перебросить твою функцию туда. :shock:
Но если сразу образумишь, чтобы время не терял буду благодарен.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.07.2004 (Пт) 10:36

Имеется в виду что в Access-e ты не сможешь написать запрос реализующий то что делает эта функция. Без использования функции в модуле.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 16.07.2004 (Пт) 12:06

Я это понимаю, что одними запросами здесь трудновато отделаться.
Ладно, оставим эту тему.
А общих чертах, ты можешь сказать чем SQL-сервер лучше Accessa?
Я как-то ставил у себя SQL-сервер, на мой взгляд он медленно работает, чем access, среда написания запросов какая-то неудобная, (ну или непривычная после Access).
Хотя интерфейс в чем-то более серьезный 8).
В чем приемущество хранимых процедур, как понимаю - это аналогия VB-кода в модуле accessa только они сделаны на T-SQL? так?
Может БД на SQL-сервере, может деражть больше пользователей? Хотя я толком не знаю сколько максимум пользователей можно повестить на одну mdb-ху на серваке.
Да, в SQL-сервере более удобно организовано создание политик для пользователей, управление доступом... (в access я этим не пользовался, поэтому не знаю на сколько это удобно там, максимум запаролить базу могу 8), а дальше вроде не было необходимости).
И вообще в организациях в основном SQL-сервер стоит :?.

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 16.07.2004 (Пт) 12:14

А общих чертах, ты можешь сказать чем SQL-сервер лучше Accessa?


Хм. Надежность, обработка заданий непосредственно на сервере, на порядок больше возможностей...

Я как-то ставил у себя SQL-сервер, на мой взгляд он медленно работает, чем access, среда написания запросов какая-то неудобная, (ну или непривычная после Access).


Работает не медленней. Среда написания запросов - спорно. Да и вообще -только простейшие запросы можно делать в конструкторе Access-a, более сложные все одно ручками.

В чем приемущество хранимых процедур, как понимаю - это аналогия VB-кода в модуле accessa только они сделаны на T-SQL?


В том что они выполняются на самом сервере - по сети трафик меньше.

Может БД на SQL-сервере, может деражть больше пользователей?


Да.

Да, в SQL-сервере более удобно организовано создание политик для пользователей, управление доступом... (в access я этим не пользовался, поэтому не знаю на сколько это удобно там, максимум запаролить базу могу , а дальше вроде не было необходимости).


В Access-e тоже неплохое разграничение доступа.
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

MOV
Постоялец
Постоялец
 
Сообщения: 414
Зарегистрирован: 13.03.2004 (Сб) 15:13
Откуда: Санкт-Петербург

Сообщение MOV » 16.07.2004 (Пт) 12:51

Спасибо. Ухожу в отпуск - надо будет внедриться получше в SQL-сервер.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.07.2004 (Пт) 13:03

Вдогонку скажу, что Access не является полноценной СУБД. Он удобен для "настольного" пользования, но для системы "клиент-сервер" у него слишком много ограничений.
Lasciate ogni speranza, voi ch'entrate.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 21.07.2004 (Ср) 14:48

а кто-нибудь вспомнил про Regular Expresion?
идея такова:
открываем Recordset -> забираем все записи в массив (естественно, нам нужны только поле по которому мы ищем и ключевое поле) -> пробегаемся по массиву, подставляя каждый элемент в качестве объекта надругательств для RegExp (тут самое главное - правильно составить это самое регулярное выражение) -> в зависимости от того, что мы получили в результате применения RegExp помечаем подходящие элементы массива -> если больше нам ничего не нужно, то показываем то, что нашли, либо подставляем ключевые поля отобраных елементов в SQL-запрос (если нужны дополнительные поля из таблицы)

без функции, конечно, не обойтись, но все же...
правда, в зависимости от количества записей в базе данных, може потребоваться довольно много оперативки (тут уж придется както оптимизировать)
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 21.07.2004 (Ср) 17:18

Этот вариант предлагали в самом начале.
Копья стали ломать из-за того, что хотели получить серверный курсор с отобранными записями.
Lasciate ogni speranza, voi ch'entrate.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 21.07.2004 (Ср) 17:32

alibek писал(а):Этот вариант предлагали в самом начале.
Копья стали ломать из-за того, что хотели получить серверный курсор с отобранными записями.

тогда "ОЙ!"
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7

    TopList