Russian Qt Forum
Ноябрь 27, 2024, 04:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: SearchEngine на C++  (Прочитано 6330 раз)
Max Payne
Гость
« : Ноябрь 24, 2010, 04:16 »

Есть приложение - учебник электронный, который поддерживает отображение текстового контента, проигрывание  видеофайлов , пдф-книги и т.д. Задача - нужно написать модуль , который сможет заполнять контентом базу приложения (приложение использует базу данных, и  спец формат текстовых файлов, и каждый файл привязан к ключевому слову, то есть как к индексу для поиска по слову). Например : имеем папку с всяким содержимым (*.тхт, *.pdf, *.doc, *.docx, *.html и т .д) мне нужно к ключевому слову (к примеру "класс") привязать файлы и добавить их в базу, модуль должен просмотреть все файлы в папке, вывести список файлов в которых встречается  слово "класс" , вывести статистику сколько раз это слово используется в текущем файле (и при необходимости скажем при выделении или двойном щелчке просмотреть этот файл),  и если я ставлю скажем галочку в чекБоксе напротив некоторых файлов, эти файлы (переделываються в формат необходимый ,если это *.тхт ) и копируются в директорию программы и добавляются в базу. Тоесть просто перелопачивание всего содержимого папки сортировка по типу и поиск в файлах ключевого слова...
Хух... Вот так вроде... Вопрос : все необходимо писать с нуля (но писать то прилично надо будет) , может кто встречал подобный системы searchEngine к примеру Lucene, или может кто посоветует с чего начать?
Записан
crossly
Гость
« Ответ #1 : Ноябрь 24, 2010, 10:13 »

так а Lucene не подходит??
Записан
Denjs
Гость
« Ответ #2 : Ноябрь 24, 2010, 12:19 »

DataparkSearch Engine ? http://www.dataparksearch.org/
я его использую для текстового поиска на сайте и в каталогах файлов "расшаренных" через http (подключил туда локальные smb-ресурсы, и признаться очень рад жизни))))

Помимо этого, он умеет работать с ftp, и вообще с много чем ещё - может индексировать вплоть до консольного вывода программы.
Есть механизм подключения парсеров (для разбора на слова всяких pdf, doc, xls и др).
Можно подключить словари для поиска с учетом окончаний и т.п.
Есть механизм интеграции с С/С++ приложением. Где-то даже кажется видел схему базы данных (в случае использования с MySQL). Помимо этого понимает ещё с пяток баз данных, включая собственную (объявлена что самая быстрая,как я понимаю потому, что ни на что другое не способна, кроме как обслуживания поиска и запросов из DataparkSearch). С Мускулем запрос по базе данных занимающей около 2.5 гигов занимает пару секунд (и это все крутится в условиях виртуального сервера с ограниченными ресурсами).

Единственный минус (для меня) - я пока не понял как его заставить искать в частях слов... но на фоне остального это, имхо, терпимо.

Открытые исходники (смотри, разбирайся, учись).
Написан на С/С++ (хотя может и на простом Си)
Возможно что Linux-only (последнее не уточнял - у мну линукс и мне на венду по***  Смеющийся )
« Последнее редактирование: Ноябрь 24, 2010, 12:32 от Denjs » Записан
Max Payne
Гость
« Ответ #3 : Ноябрь 24, 2010, 20:37 »

Denjs - спасибо , но :
На даенный момент известно об успешных установках DataparkSearch на следующих опреационных системах:

CentOS 3.1, CentOS 3.3
Debian GNU/Linux (Lenny, Etch) (i386)
FreeBSD 2.2.x, 3.x, 4.x, 5.x, 6.x, 7.0
Linux Fedora Core-1, Kernel 2.4.22-1.2174
Linux Mandrake 10.2
Linux Red Hat 8.0, 9.0
Solaris 9
Solaris 10 x86, gcc
Ubuntu Linux 6.10, 7.x, 8.x, 9.04 (i386 and amd)
Gentoo Linux 2007.0 amd64
OpenBSD 4.5 (i386)

Пока что двигатель работает только на юникс подобных системах. Я пишу пока под виндой и тут трабл, так что вариант не плохой но не подходит.
Записан
Max Payne
Гость
« Ответ #4 : Ноябрь 24, 2010, 20:42 »

Цитировать
так а Lucene не подходит??

Я пока только просматриваю этот вариант , и ищу пока альтернативу, чтоб можна было хотя бы сравнить.
Я рылся в поисковике гугл, что то ничего внятного не нашел. Кто знает или может ссылочку где можно почитать, побольше о движке Lucene, или документация, желательно на русском язике. :/ Если я не ошибаюсь он тоже под юникс писался. Есть ли интегратор под С/С++ ?
Записан
crossly
Гость
« Ответ #5 : Ноябрь 24, 2010, 21:24 »

Цитировать
Есть ли интегратор под С/С++ ?
CLucene.... в Qt есть QtCLucene....
Записан
Max Payne
Гость
« Ответ #6 : Ноябрь 26, 2010, 09:41 »

Ясн ищу, читаю, разбираюсь. Спасибо, хотя инфы что то маловато, если я правильно понял, эта библиотека появилась с Qt4.x
Но на офф сайте я ничего не нашел... =(
Записан
crossly
Гость
« Ответ #7 : Ноябрь 26, 2010, 11:05 »

в документации ее нету... т.к. это внутренняя библиотека Qt... но никто не запрещает ее использовать...
Записан
Max Payne
Гость
« Ответ #8 : Ноябрь 26, 2010, 14:36 »

Ну а где можно почитать о ее функциях , о возможностях, как использовать... Ну с чего то надо же надо начать.. Ее надо скачать? Так как я скачал набор библиотек с Qt 4.7 и эту библиотеку так и не нашел. Подскажите пож. кто ее использовал как юзать, а то даже инклуд ее не видит.
Записан
Denjs
Гость
« Ответ #9 : Ноябрь 26, 2010, 14:41 »

Так как я скачал набор библиотек с Qt 4.7 ...
значит у вас должен быть и QAssistant. в нем и смотрите. это подсистема помощи по QT.
Если вы конечно скачивали SDK ("Qt SDK: Complete Development Environment") а не просто набор библиотек ("Qt: Framework Only").
Записан
crossly
Гость
« Ответ #10 : Ноябрь 26, 2010, 15:18 »

Так как я скачал набор библиотек с Qt 4.7 ...
значит у вас должен быть и QAssistant. в нем и смотрите. это подсистема помощи по QT.
Если вы конечно скачивали SDK ("Qt SDK: Complete Development Environment") а не просто набор библиотек ("Qt: Framework Only").
в ассистенте вы это либу не найдете... это внутренняя либа ... используется в ассистенте ... исходники найти можно в qt/tools/assistant/lib/fulltextsearch ... и курить их...
Записан
Max Payne
Гость
« Ответ #11 : Ноябрь 26, 2010, 21:20 »

Тоесть, Надо вручную на свой страх и риск, копаться, и надеяться что что то пойму? Дам перспективка, работы только расчехлятся в коде на пару месяцев  Непонимающий Непонимающий.
Записан
kogemrka
Гость
« Ответ #12 : Ноябрь 27, 2010, 13:10 »

CLucene
Записан
Max Payne
Гость
« Ответ #13 : Ноябрь 29, 2010, 00:12 »

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

И еще есть ли готовые модули для чтения документов (*.doc, *.docx, *.html, *.chm, *.pdf(текстовые) *.txt, *.cpp) или все таки ручками писать придется все с нуля? Не то чтоб это сложно просто кода многовато, а если есть готовые примеры, ил что то в этом роде, то грех не использовать Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.1 секунд. Запросов: 21.