Форум: "Начинающим";
Текущий архив: 2011.01.30;
Скачать: [xml.tar.bz2];
ВнизКак правильно хранить данные для быстрого поиска Найти похожие ветки
← →
kolyaVin (2010-11-11 21:39) [0]у меня есть большой список текстов песен.
хочу перегнать все тексты в базу данных и создать программу для удобной навигации\поиска.
первая идея:
- таблица название_песни: строка, текст_песни: мемо поле
в дальнейшем искать песни по введенному слову через sql .. where like %слово%
что-то сразу же не понравился этот способ, наверное долго будет отрабатываться при пару десятков тысяч песен, да и размер базы наверное будет большой.
- второй вариант.... сижу туплю..
как-то может текст песни разбирать по словам и строить базу слов как-то связывая слово с песней.. вообщем бред какой-то...
может подскажите как примерно организовано это в тех же поисковах, справки и т.п.
спасибо хотя бы за то, что прочитали столько букв.. )
← →
Anatoly Podgoretsky © (2010-11-11 21:46) [1]Искать по мемо полям ты сможешь, только если есть полнотекстовый поиск, желательно с морфологией.
← →
kolyaVin (2010-11-11 21:49) [2]не могли бы вы подсказать, где бы про это почитать ..
или привести пример мааленький структуры таблиц и связь их
← →
kolyaVin (2010-11-11 21:53) [3]хм.. почитал тут: http://www.rsdn.ru/article/files/libs/fullsearch.xml руки упали...
← →
Anatoly Podgoretsky © (2010-11-11 21:54) [4]> kolyaVin (11.11.2010 21:49:02) [2]
В справке по конкретному серверу.
← →
Anatoly Podgoretsky © (2010-11-11 21:58) [5]
> kolyaVin (11.11.10 21:53) [3]
Это не по БД, в БД проще
← →
kolyaVin (2010-11-11 22:06) [6]хотелось бы обойтись без сервера..
пусть неполноценный поиск..
примерная мысль:
- строим таблицу песен
код, название песни
- строим таблицу слов из текстов песен (более 3 символов..)
код, слово
- походу заполняем таблицу связей
код_песни, код_слова
ну и далее ввели в поиск какие-то слова..
отбираю их в таблице слов.
беру их кода и отбираю в таблице связей
по получившемуся результате отбираю таблицу песен
как думаете, будет это работать не сильно заторможенно?
← →
Anatoly Podgoretsky © (2010-11-11 22:12) [7]
> как думаете, будет это работать не сильно заторможенно?
Как же тогда с этим?
> хочу перегнать все тексты в базу данных
← →
kolyaVin (2010-11-11 22:25) [8]не схвачу никак вашу мысль\юмор..
перегнать то я перегоню и построю таблицы.
думаю слов более 3 букв окажется не более пару тысяч.
таблица связей будет 25тыс. песен*50слов = 1 250 000 записей...
слова отобрать думаю быстро получится..
далее по кодам вот выбрать связи тут х.з.
таблицы ADO.
если более секунд 20 займет поиск то не пойдет...
просто у вас опыт, думал на глаз прикините бредовая идея или нет..
прошу прощения, по ходу вопрос созрел по ADO, гуглю уже 20 минут,
где можно посмотреть какие параметры полей бывают в таблицах.
ADOCommand1.CommandText := create table ..;
INTEGER, STRING даёт.. не пойму как Boolean, Byte будет...
в ADODB.pas вроде бы есть описание
adBinary: Result := ftBytes;
но на выполнение запроса пишет ошибка в синтаксисе..
создаю базу "Provider=Microsoft.Jet.OLEDB.4.0"
где бы почитать какие типы полей в sql запросах можно указывать?
← →
Anatoly Podgoretsky © (2010-11-11 22:45) [9]> kolyaVin (11.11.2010 22:25:08) [8]
Бредовая делать сложный инструмент, не контролируемый ситуацию.
Таблица связей должна иметь другую структуру
слово, ид записи (песни) и таких записей на каждое слово будет много.
В русском языке свыше 200 000 слов, средней длины 7 букв
Работать конечно будет чрезвычайно быстро, но для одного слова (без учета
морфологии).
Но обычно поиск по нескольким словам, и без морфологии он неинтересен.
← →
_Юрий (2010-11-11 23:37) [10]
> Anatoly Podgoretsky © (11.11.10 22:45) [9]
Таблица связей должна иметь другую структуру
Он тоже самое и написал.
> kolyaVin (11.11.10 22:25) [8]
Работать должно быстро. Индекс в таблице по значению слова не забудьте.
← →
Sergey13 © (2010-11-12 09:43) [11]> [6] kolyaVin (11.11.10 22:06)
> как думаете, будет это работать не сильно заторможенно?
ИМХО это будет работать неправильно. Песни ищут по ФРАЗЕ, а не по отдельным словам.
По словам "солнце" и "лес" вряд ли получится найти "солнышко лесное".
Про быстроту - не думаю, что "пара десятков тысяч песен" это серьезный объем. Тормоза конечно можно обеспечить и на меньшем объеме, но...
ЗЫ: При наличии интернета и всяких гуглей сама идея самопального поиска по ограниченному набору данных становится малопривлекательной, ИМХО.
← →
Anatoly Podgoretsky © (2010-11-12 09:47) [12]Привлекательно, для радиостанций, где заказывают исполнение. Им нужен нечеткий поиск с указанием место хранения. А иначе нафиг искать, привлекательность вообще низкая.
← →
Sergey13 © (2010-11-12 10:29) [13]> [12] Anatoly Podgoretsky © (12.11.10 09:47)
Да, про радио я не подумал. Но для станций "хотелось бы обойтись без сервера" как то не прокатывает.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.01.30;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.003 c