21 Сентябрь 2009

Научная поисковая система на вашем Linux-десктопе

Некоторое время назад я писал о SWISH++, и вот теперь мне хотелось бы обобщить написанное в более краткой форме. Проблема поиска нужной статьи, если не помнишь точно где она находится в каталогах, действительно серьёзная.


1. Поиск дубликатов
Итак, когда я накачал нужных мне статей из Интернета, я прежде всего смотрю, есть ли они у меня в коллекции с помощью fdupes. Эта программа ищет дубликаты файлов:

$ fdupes -rd .
Точка в конце говорит о том, что искать дубликаты fdupes будет, начиная с текущего каталога, поэтому можно в каталоге со статьями сделать подкаталог 1/ и набросать туда скачанные статьи.

Fdupes сравнивает файлы как побайтово, так и с помощью подсчёта md5-суммы, работает невероятно быстро, сортировка производится в полуавтоматическом режиме: программа выводит в консоли дублирующиеся файлы и спрашивает, какой из них оставить. Об этом уже говорилось в статье о подходах к сортировке PDF-файлов.


2. Индексация текста в PDF-файлах
Сначала из
документов pdf вытаскиваем текст, для чего просим утилиту find найти все файлы PDF и для каждого найденного выполнить pdftotext без выдачи предупреждений и без вставки символов разрыва страницы:
find -name '*.pdf' -exec pdftotext -nopgbrk -q {} \;
Надо отметить, что pdftotext хорошо работает только для английского языка, на котором, в общем, все статьи и написаны.

Теперь индексируем все текстовые файлы - в этом нам поможет собрат SWISH++ по имени index++ для индексации текстовых файлов:
index++ -e "text:*.txt" .
Точка в конце означает, что поиск ведётся с текущего каталога. Подробнее об индексации и автоматизации этого процесса сказано здесь.

В результате в текущем каталоге появится файл swish++.index где, собственно, лежит информация об индексировани файлов. Теперь всё готово для поиска.


3. Ищем в архиве статей нужное
Для поиска используем search++ которая найдёт по нашему запросу в индексированной базе swish++.index файлы. Вот пример поиска статьи по математической морфологии, в которых нет упоминания про медицину:
$ search++ morphology and erosion and dilation not medicine
Мгновение спустя вижу результат (вывод сокращён):
# results: 125
99 ./Krylov2.txt 3771 Krylov2.txt
49 ./13300407.txt 3103 13300407.txt
46 ./morph1.slides.printing.6.txt 4369 morph1.slides.printing.6.txt
37 ./lecture_morphology_sara.txt 6746 lecture_morphology_sara.txt
30 ./SIGGRAPH2002_Sketch-Mitchell.txt 5308 SIGGRAPH2002_Sketch-Mitchell.txt
26 ./MorphologicalImageProcessing.txt 7642 MorphologicalImageProcessing.txt
25 ./phdsymp2002_ledda.txt 8298 phdsymp2002_ledda.txt
23 ./lab2_manual.txt 9313 lab2_manual.txt
23 ./Project 1.txt 9946 Project 1.txt
22 ./morphology.txt 11212 morphology.txt
22 ./edg/morphology.txt 11212 morphology.txt
22 ./slides-6-geometry.txt 11717 slides-6-geometry.txt
22 ./V1BFOGG8.txt 10797 V1BFOGG8.txt
18 ./71650638.txt 13978 71650638.txt
Первая колонка - релевантность, вторая - расположение файла относительно текущей директории, третья - размер файла, четвёртая - имя. Просто и понятно.

Теперь в консольке набираю kdpf
./Krylov2.pdf и смотрю нужную мне статью. И всё.

Ссылки
Собственно, документации о SWISH++ очень мало, так что в основном я решил собрать свои предыдущие записи в один пост:
- поиск и удаление дубликатов файлов с помощью fdupes;
- выделение текста из PDF-файлов и их индексация;
- поиск в индексированных файлах с помощью SWISH++

а если копируете статью - поставьте ссылку на оригинал!

9 комментариев:

lizardie 21.09.2009 12:36:00  

а почему бы для этого просто beagle не использовать?

Magik 21.09.2009 12:57:00  

Я уже довольно давно отказался от хранения статей на локальной машине, все заливаю в citeulike.org . Тут тебе и bib файл сразу создадут и pdf дадут загрузить котоый будет доступен из любого места где есть интернет. Недавно появились рекомендации, забавная фича )
Единственно там нет полнотекстового поиска по всей статье, но посика по тексту Абстракта обычно хватает.

antalar 21.09.2009 13:59:00  

кхм. Очень похоже на функционал zotero

virens 21.09.2009 14:56:00  

@ lizardie комментирует...
а почему бы для этого просто beagle не использовать?
Он слишком здоровый для этого. Мне хотелось найти маленькое и изящное решение. И я его нашёл :-)

@Magik комментирует...
Я уже довольно давно отказался от хранения статей на локальной машине
Потому, что в твоих буржуйских палестинах интернет быстр и дешёв, чего про наши медвежьи края не скажешь :-)


все заливаю в citeulike.org
О! Спасибо, Коля, я про это не знал!

Тут тебе и bib файл сразу создадут и pdf дадут загрузить котоый будет доступен из любого места где есть интернет.
Клаааассссс! :-) А мне редакция журнала по голове не настучит за это?

Единственно там нет полнотекстового поиска по всей статье, но посика по тексту Абстракта обычно хватает.
У меня довольно много статей, материал которых иногда бывает нужен, а я забываю, куда их бросил. SWISH++ в этом деле незаменим.

ЗА citeluke огромнейшее спасибо! У них там, кстати, сколько места под PDF-ы есть?

@antalar комментирует...
кхм. Очень похоже на функционал zotero
Если речь идёт о плагине для файрфокс - то нет. Здесь индексация по всему тексту статьи в PDF. То есть когда мы нашли нужную нам статью, открываем её и читаем.

Magik 22.09.2009 10:36:00  

А мне редакция журнала по голове не настучит за это?
Не не настучит ) Это твоя персональная копия, ты не можешь ее расшаривать с другими участниками. Вообще не так давно citeulike взял под крыло Шпрингер, так что издательства только за )
У них там, кстати, сколько места под PDF-ы есть?
Я так понимаю сколько хош столько и есть ) Я ни разу еще не встречался с какими либо ограничениями )

Едиснтвенно я не проверял как сайт работает с русскими статьями, возможно там есть проблемы.

max5555 23.09.2009 15:14:00  

Google desktop возможно даже тяжелее Beagle, но зато никогда не давал сбоя. Хранение же файлов на citeulike не позволяет делать пометки в PDF файлах с помощью okular.

Pavel Vyazovoi 27.09.2009 8:55:00  

А почему не swish-e?
Я swish++ не пользовался, а вот swish-e раньше использовал. Потом пришёл к выводу что это механизм с большим количеством телодвижений и просто установил tracker.

Кстати, по поводу аннотаций в Okular - очень очень очень хочу что-то такое же всеядное и позволяющее делать пометки, не завязанное на KDE. Может быть есть что-то такое, ну например для GTK или QT, или пусть на гномо-либах завязанное (все равно стоят)? Пусть не всеядное, хоть для pdf бы.

асоциальный психопат 29.09.2009 20:34:00  

Но ведь это только для английского языка, да?

virens 30.09.2009 15:07:00  

@ max5555 комментирует...
Хранение же файлов на citeulike не позволяет делать пометки в PDF файлах с помощью okular.
Обновлюсь на Ленни (или сквизи, когда выйдет) специально ради okular. Не собирается у меня под этчем...

А идея SWISH++ в том, чтобы искать локально.

@Pavel Vyazovoi комментирует...
А почему не swish-e?
Его, swish-e, переработали и сильно улучшили. Решил использовать именно его.

Кстати, по поводу аннотаций в Okular - очень очень очень хочу что-то такое же всеядное и позволяющее делать пометки
Это да, этого очень и очень сильно мне не хватает.

@асоциальный психопат комментирует...
Но ведь это только для английского языка, да?
Да, ибо все нормальные научные статьи написаны именно на английском языке.

Поиск по сайту

Архивы блога

Новостная лента


Читать новости блога удобнее, подписавшись на
-ленту.
краткая лента новостей.
Блокнот интересных ссылок в Twitter
Получать на E-mail Записки дебианщика rss2email.ru

Последние новости

Все записки дебианщика

Скачать локальную версию блога "Записки дебианщика" для offline-просмотра можно здесь. Архив 7z занимает ~120Мб, в распакованном виде ~2Гб.

Постоянные читатели

Экипаж

Автор
My Photo
Михаил Конник
Инженер-физик, занимаюсь оптикой и цифровой обработкой изображений. Профиль
Главный редактор
Моя фотография
Programmaster, в полный рост

Кнопки