> Просто - это как? Как эти хеши вообще устроены - это где-то описано или
> надо в исходниках 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@xxxxxxxxxxxxx mailing list =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.