![]() |
|
Модераторы: bsa |
![]()
|
|
| LostLev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.12.2008 Репутация: нет Всего: нет |
Здравствуйте!
Возникла надобность написать программу-толковый словарь. то есть вводишь ей слово, она выводит его лексическое значение. Лексическое значение она берёт из словаря Даля, который лежит у меня на РБ введи тхт. Ну и, собственно, вопрос: Как это сделать? код целеньком можно не выкладывать(хотя можно и выложить или кинуть на мыло), лучше дать основные направления работы, ну или каркас кода. Работаю(ну да смешно) я на Microsoft Visual Studio 2008, русская версия язык, понятно C++. К сообщению прикреплён кусок того самого словаря, это вроде важно. Заранее спасибо за ответы, извиняюсь если повтор. [email protected] Присоединённый файл ( Кол-во скачиваний: 26 )
______.txt 6,29 Kb |
|||
|
||||
| Dmi3ev |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1698 Регистрация: 28.11.2007 Репутация: 13 Всего: 41 |
я не уловил структуру файла... честно признаюсь... там и какие-то поговорки...
-------------------- |
|||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
ну самое первое что приходит в голову
те ключом словаря является словов(регистр не учитывается), а значением по ключу будет .....эм нечто индекса по которому можно будет найти толкование в файле |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
жестко, весь словарь Даля в память подгружать Это сообщение отредактировал(а) azesmcar - 12.3.2009, 08:43 |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
БД
|
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
||||
|
||||
| chaos |
|
|||
![]() Серийный программист ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2979 Регистрация: 7.7.2004 Где: Екатеринбург Репутация: нет Всего: 44 |
azesmcar, Lazin, mrbrooks
мда |
|||
|
||||
| azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
согласен, но думаю что под термином БД не обязательно подразумевать именно какую нибудь СУБД. Чтоб не таскать с программой драйверы и саму СУБД в целом можно написать свою, специально оптимизированную примитивную базу данных. Например написать утилиту индексирующую файл, данные хранить отсортированными. При поиске просто искать по индексам. Можно например создать файл который будет хранить первую букву слова и смещение начала всех слов в основном БД. Посмотреть первую букву искомого слова и уже бинарным поиском искать в файле. Процесс поиска будет намного быстрее. А индекс можно и загрузить в память. Пример: Индексная таблица
Файл
ищем слово москвич - находим в индексной таблице М - начинаем искать в файле, начиная с 5 по 6 строку бинарным поиском. Это сообщение отредактировал(а) azesmcar - 12.3.2009, 13:06 |
||||||
|
|||||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
azesmcar, ну тут - грубо говоря - уже дело выбора разработчика.
Я бы - честно говоря не замарачивался - и заюзал бы тот же SQLite или что нибудь из этой оперы. Это сообщение отредактировал(а) mrbrooks - 12.3.2009, 13:20 |
|||
|
||||
| azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
тоже вариант, я правда не использовал, не знаю как он себя будет вести если в базе свыше миллиона строк. Добавлено через 4 минуты и 9 секунд
хотя думаю нормально, ту же оптимизацию можно в любой СУБД сделать, главное чтобы СУБД не сдохла от большого количества записей..но думаю не сдохнет |
||||||
|
|||||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 19 Всего: 306 |
Судя по отзывом, должна шустрить быстрее мускула. Тем более если автор возьмется использовать SQLite - заодно и узнаем - как оно - при превышении миллиона строк |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 5 Всего: 59 |
ИМХО
Разрабатывать свою СУБД дело дохлое - так как проект достаточно серьезный, даже с точки зрения наполнения данной БД. Так что надо брать готовое решение. Вопрос риторический: а оно надо? В конце концов есть википедия. |
|||
|
||||
| LostLev |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 13.12.2008 Репутация: нет Всего: нет |
Дело в том, что словарь это первая часть проекта, причём не маленького. Самим словарём пользоваться никто не будет, но на его основе будет писаться весь последующий код, так что написан он должен быть, во-первых, толково, во-вторых, только на С++, причём с использованием стандартных библиотек(а желательно только MFC). Скорость работы не очень важно, главное чтоб не висло. Вообще желательно сделать что-то вроде Explanatory(http://maerdtfos.narod.ru), а ещё лучше нарыть ейные исходники...
Главная проблема, по прежнему работа со словарём Даля. P.S Спасибо огромное за столь активное участие, неожидал)) |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 27 Всего: 154 |
можно посмотреть исходники stardict
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
LostLev, на счет MFC ты зря. Она умирает... Может стоит что-то более современное и удобное использовать?
А по поводу словаря, для начала я бы изучил готовые открытые словари (например, stardict) и, при возможности, использовал их. Думаю, все словари делают индекс слов (слово - позиция в файле с описанием) - для миллиона слов индекс будет порядка пары десятка мегабайт. Если еще этот индекс не держать в ОЗУ, а хранить в файле в отсортированном виде + индекс первых букв, а при поиске использовать метод деления пополам, то скорость будет довольно высокая. ИМХО. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |