> Просто - это как? Как эти хеши вообще устроены - это где-то описано или
> надо в исходниках htdig-а разбираться?
>
Хэш - пара (ключ-значение), htdig сохраняет их в файлах, в нескольких
форматах. Самый удобный - Berkeley DB. Смотреть документацию на gdbm -
/gdbm/ в любом GNU архиве, Berkeley DB - http://www.sleepycat.com/.
Когда пользователь дает слово, список словоформ можно получить, выбрав
из word2root нормальную форму и выбрав из root2word все модификации:
my @words = $root2word{word2root{$word}};
Плохо, что хэши большие, в них не все слова, поэтому полезнее уметь
получать словоформы по какому-то алгоритму. Если товариши сделают
общедоступным алгоритм, им надо поставить памятник при жизни. Но как
рабочее средство хэши можно использовать.
Вот пример чтения и распечатывания хэша для Berkeley DB ( для остальных
хэшей, а их много, практически такой же текст, за исключением строки
tie).
#!perl
use DB_File;
use strict;
my %h;
tie %h, 'DB_File', "root2word", O_RDONLY, 0644, $DB_HASH;
my ($key, $val);
while ( ($key, $val) = each %h ) {
print "$key -> $h{$key}\n";
}
untie %h;
--
Konstantin Tokar (http://www.mpei.ac.ru/tokar)
=============================================================================
= Apache-Talk@lists.lexa.ru mailing list =
Mail "unsubscribe apache-talk" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =