Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
8-1209027451
andreil
2008-04-24 12:57
2011.01.30
Как преобразовать 8-битеый цвет в 4-байтный TColor?


15-1287403277
Дмитрий Тимохов
2010-10-18 16:01
2011.01.30
Посоветуйте стредство шифрования файлов.


15-1286879651
Пит
2010-10-12 14:34
2011.01.30
Версионность MS XML движка


11-1228467941
Дмитрий
2008-12-05 12:05
2011.01.30
Как изменить высоту items in listview?


15-1287386006
Юрий Зотов
2010-10-18 11:13
2011.01.30
О машинной арифметике (комментарий к удаленной ветке)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский