Локальный поисковик

Со временем, на жестких дисках скапливается множество потенциально полезной информации, которая так никогда и не лишится своей потенциальности. Ибо не так и просто отыскать чёрную кошку посреди стаи чёрных котов, если она того не хочет. Как же нам заставить потенциально полезную кошку захотеть быть найденной? Да как обычно это и принято в мире Linux -- помните превило номер один? Если вам лень заниматься какой-либо обработкой данных -- поручите это дело специальной программе, в данном случае -- поисковику.

Программ-поисковиков довольно не маленькое число существует, самыми известными среди которых являются htdig, mnogosearch, glimpse... Но лучшим среди оных я в настоящее время полагаю программу swish-e, выгодно отличающуюся от вышеперечисленных простотой конфигурации и богатством возможностей. В частности, swish-e имеет следующие возможности:

Для примера, мои файлы конфигурации swish-e содержат, в частности, следующие строки (в файле base-config):

IndexReport 3
MinWordLimit 3

WordCharacters  .-_'abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя\
                АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ1234567890
BeginCharacters abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя\
                АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ1234567890
EndCharacters   abcdefghijklmnopqrstuvwxyzабвгдеёжзийклмнопрстуфхцчшщъыьэюя\
                АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ1234567890
IgnoreFirstChar .-_'
IgnoreLastChar  .-_'
TranslateCharacters ёЁ_, еЕ-.

FileRules pathname contains \.r\d+$
FileRules pathname contains \.part\d+(2|3|4|5|6|7|8|9|0)\.rar$
FileRules pathname contains \.index$
FileRules pathname contains \.prop$

NoContents .par2 .md5

FileFilter	.pdf	pdftotext '-enc KOI8-R "%p" -'
FileFilter	.ps		ps2text '"%p"'
FileFilter	.djvu	djvutxt '"%p"|konwert utf8-koi8r'
FileFilter	.doc	catdoc '-vwscp1251 "%p"'
FileFilter	.rtf	catdoc '-vwscp1251 "%p"'
FileFilter	.wri	catdoc '-vwscp1251 "%p"'
FileFilter	.chm	catchm '"%p"|konwert cp1251-koi8r'
FileFilter	.deb	dpkg '--info "%p"'
FileFilter	.mp3	mp3info '"%p"'
FileFilter	.ogg	ogginfo '"%p"'
FileFilter	.jpg	metacam '"%p"'

DefaultContents TXT*

В файле base-config-ru есть помимо прочих строки:

IncludeConfigFile basic-config

FuzzyIndexingMode Stemming_ru

FileFilter	.html	cat  '"%p"|konwert any/ru-koi8r'
FileFilter	.txt	cat  '"%p"|konwert any/ru-koi8r'
FileFilter	.gz		catar '"%p"|konwert any/ru-koi8r'
FileFilter	.tgz	catar '"%p"|konwert any/ru-koi8r'
FileFilter	.bz2	catar '"%p"|konwert any/ru-koi8r'
FileFilter	.z		catar '"%p"|konwert any/ru-koi8r'
FileFilter	.zip	catar '"%p"|konwert any/ru-koi8r'
FileFilter	.rar	catar '"%p"|konwert any/ru-koi8r'
FileFilter	.arj	catar '"%p"|konwert any/ru-koi8r'

А для каждой подлежащей индексированию сущности приготовлен конфигурационный файл, примерно, как файл home-docs-books:

IncludeConfigFile basic-config-en

IndexName "Books on the home."
IndexDescription "This is an index of /home/docs/Books"
IndexPointer /home/docs/Books
IndexAdmin Nikolay A. Panov

IndexDir  /home/docs/Books
IndexFile /home/nik/Sites/swishdir/indexes/home-docs-books.index

При этом индексация начинается командой swish-e -e -c home-docs-books. В результате получаем файл /home/nik/Sites/swishdir/indexes/home-docs-books.index, по которому можно искать, как пример самого простого45:

[11:58 /]$ swish-search -f /home/nik/Sites/swishdir/indexes/home-docs-books.index \
                        -w Artificial Intelligence
# SWISH format: 2.4.3
# Search words: Artificial Intelligence
# Removed stopwords: 
# Number of hits: 168
# Search time: 0.431 seconds
# Run time: 0.451 seconds
1000 /home/docs/Books/Computer Science/Artificial Intelligence/
     Tanimoto S.L. Elements of artificial intelligence..
     an introduction using LISP (1987)(T)(553s).djvu 7129538
954 /home/docs/Books/Computer Science/Genetic algorithms, neuronetworks/
    Chambers D.L. (ed.) Vol. 2. Handbook of genetic algorithms. 
    New frontiers (CRC, 1995)(421s).djvu 5320731
913 /home/docs/Books/Computer Science/Genetic algorithms, neuronetworks/
    Chambers D.L. (ed.) Vol. 3. Handbook of genetic algorithms. 
    Complex coding systems (CRC, 1999)(659s).djvu 3773019

...и так далее...

Рекомендую прописать alias, по примеру такого:

alias ss='swish-search -f /home/nik/Sites/swishdir/indexes/*.index -m 24 -w'
Тогда искать можно будет следующим образом:
[12:16 /]$ ss \"космический календарь\"
# SWISH format: 2.4.3
# Search words: "космический календарь"
# Removed stopwords: 
# Number of hits: 3
# Search time: 0.013 seconds
# Run time: 0.225 seconds
1000 /home/docs/Library/Library13/Lib/022/tajnws.rar 343675
817 /home/docs/Library/unsorted/Карл Саган -- Драконы Эдема.zip 733418
757 /home/docs/Library/Library13/Lib/022/rerihs.rar 1477816
.



Footnotes

... простого45
Переносы строк вставлены мной.


Copyleft © 2002-2007 г.   Nikolay A. Panov, "Intro To Linux" (orig),  author@niksite.ru