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

Вниз

Как правильно хранить данные для быстрого поиска   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.008 c
15-1287513623
Константинов
2010-10-19 22:40
2011.01.30
Работа с локальной БД удаленно


2-1289544248
Gu
2010-11-12 09:44
2011.01.30
Popup owner


15-1284233860
NailMan
2010-09-11 23:37
2011.01.30
А еще я полетал на параплане в качестве пакса


15-1286732325
Сергей
2010-10-10 21:38
2011.01.30
Литература для начинающих


15-1287145661
неокубинец
2010-10-15 16:27
2011.01.30
Acer или не Acer?