Командная строка для полнотекстовой индексации?

37

Есть ли такая вещь, как механизм полнотекстового индексирования, который можно запрашивать из командной строки и в идеале вообще не требует использования графического интерфейса?

Я особенно заинтересован в индексировании моих электронных книг и статей, так что это смесь pdf, epub и нескольких djvu. (Открыто) Документы Office были бы хороши, но намного ниже в моем списке.

жюльен
источник
1
Можете ли вы более конкретно указать, какой формат использует индекс?
ixtmixilix
Хороший вопрос, отредактировано.
Жюльен
-1 Как указывается ниже, Lucene или Tracker - хороший выбор, но в чем ваша проблема с «использовать gtk, или даже хуже, qt»? Хорошо использовать только командную строку, но я не вижу смысла критиковать набор библиотек ...
tmow
2
@tmow: точка взята, вопрос отредактирован. Не хотел подрывать
чью-

Ответы:

11

Вы смотрели на Lucene или Sphinx? В то время как вам нужно будет сначала проанализировать документы, которые вы хотите проиндексировать, как только это будет сделано, любой из них можно искать из кли.

Для Lucene есть некоторая информация о том, как сделать это доступным .

Сфинкс, немного более расплывчатый, но есть также некоторая доступная документация . Вы можете передавать выбранные структурированные XML-данные в sphinx через источник данных xmlpipe2.

Lucene опирается на Java, а Sphinx построен на C ++ без каких-либо внешних зависимостей.

Либо кому-то понадобится немного работы, чтобы сделать то, что вы хотите, но, похоже, это вполне работоспособное решение.

Гейб.
источник
1
Кроме того, если вы хотите индексировать данные, которые находятся в БД (postrgres, mysql), то любой из них также работает невероятно хорошо.
таращиться
хм, я уволил sphinx за то, что он слишком низкоуровневый, но, глядя на xmlpipe2, кажется, что скрипт-обёртка для pdf2txt или чего-то подобного был бы довольно легким ...
julien 14.10.10
+1 за упоминание в Lucene. У меня были хорошие времена с Lucene, это просто ужас!
Nikhil Mulley
Я считаю , что elasticsearch основан на Lucene, и может быть более удобным для использования (будучи выше уровня вещь).
offby1
5

проверь xapian . Он имеет интерфейс командной строки и может индексировать множество форматов.

Михал Шрайер
источник
xapian - отличный индекс, мой личный фаворит, и он написан на нативном C ++ !. То, что использует xapian, было бы наиболее идеальным для многих проектов, требующих индексации +1.
Дж. М. Беккер
4

Recoll может быть построен без графического интерфейса и будет искать ваши типы документов из командной строки.

Он использует Xapian под капотом.

user2391635
источник
3

Трекер может быть вызван из командной строки, и gtk + не является жесткой зависимостью для проекта (но может быть для пакетов).

Мацей Печотка
источник
Ну, если я не ошибаюсь, он все равно попытается вытащить (большие части) гнома как зависимость.
Жюльен
1
Как я уже сказал - проект (в версии 0.9.x по крайней мере единственная жесткая зависимость GNOME - это glib). Пакеты могут скомпилировать штатный штатный персонал, такой как GUI, поэтому вам может понадобиться скомпилировать его вручную.
Мацей Пехотка
3

Этот ответ рекомендует использовать поиск кода Google ,

Поиск кода - это инструмент для индексации и последующего поиска по регулярному выражению в больших объемах исходного кода.

Суперпользователи на Debian / производные могут попробовать: sudo apt-get install codesearch

joeytwiddle
источник
1
этот ответ содержит некоторые подробности по установке из источника; на случай, если он не доступен в репозиториях для вашей ОС: superuser.com/a/1263343/65975
ccpizza
2

В настоящее время существует два потока Tracker: стабильный (0,8) и нестабильный (0,9). Ваша ОС, скорее всего, имеет версию 0.8, поэтому, если вы можете себе это позволить (у нее есть некоторые передовые программные зависимости), скачайте последний tarfile (0.9.x). Он имеет множество улучшений по сравнению с 0,8, и в настоящее время он еще более стабилизирован , чтобы быть 0,10 (четные числа представляют стабильность). Если вы решите пойти по этому пути, используйте эту команду для настройки:

./configure --disable-tracker-needle --disable-tracker-preferences --disable-tracker-explorer --disable-tracker-status-icon

Скорее всего, у вас не будет установленных зависимостей, поэтому будет проще установить 0.8 из вашего дистрибутива и просто избегать битов GUI. В Debian Squeeze, Ubuntu 10.10 и Ubuntu 11.04 они хорошо разделены. Итак ( от имени root ) запустите:

apt-get install --no-install-recommends tracker-utils tracker-miner-fs

Инструмент CLI для этого есть tracker-search, поэтому запустите его с --helpопцией, чтобы увидеть, как воспользоваться этим :-)

примечания :

  • На Fedora 14 пакет Tracker зависит от GTK +. Я предполагаю, что это потому, что он включает в себя такие вещи, как tracker-appletи tracker-preferences. Однако у них есть отдельный пакет для tracker-search-toolинтерфейса поиска GUI.
  • DjVu и ePUB (пока) не поддерживаются. Вот список того, что есть .
tshepang
источник
0

Этим летом я работал над созданием инструмента полнотекстового поиска (новая версия) для индексации и поиска справочных страниц по NetBSD с использованием Sqlite3. Он состоит из двух инструментов командной строки:

  • makemandb: который анализирует и создает индекс содержимого страниц man.
  • по поводу: инструмент для запроса этого индекса.

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

Вы можете прочитать больше о проекте здесь

Код здесь

Абхинав Упадхьяй
источник