From d5c1e17d4914c8409a7a741570e94e0ade6ec017 Mon Sep 17 00:00:00 2001 From: in2 Date: Wed, 25 Jun 2003 08:00:32 +0000 Subject: FuzzyIndex git-svn-id: http://opensvn.csie.org/pttbbs/pttbbs/trunk/pttbbs@966 63ad8ddf-47c3-0310-b6dd-a9e9d9715204 --- blog/builddb.pl | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'blog/builddb.pl') diff --git a/blog/builddb.pl b/blog/builddb.pl index b519587b..1cec2615 100755 --- a/blog/builddb.pl +++ b/blog/builddb.pl @@ -7,6 +7,7 @@ use IO::Handle; use Data::Dumper; use BBSFileHeader; use DB_File; +use OurNet::FuzzyIndex; sub main { @@ -99,12 +100,17 @@ sub buildconfigure($$) sub builddata($$$$$$) { my($board, $rbh, $rebuild, $contentonly, $number, $force) = @_; - my(%dat, $dbfn, $y, $m, $d, $t, $currid); + my(%dat, $dbfn, $idxfn, $y, $m, $d, $t, $currid, $idx); $dbfn = "$BLOGROOT/$board.db"; - unlink $dbfn if( $rebuild ); + $idxfn = "$BLOGROOT/$board.idx"; + if( $rebuild ){ + unlink $dbfn; + unlink $idxfn; + } tie %dat, 'DB_File', $dbfn, O_CREAT | O_RDWR, 0666, $DB_HASH; + $idx = OurNet::FuzzyIndex->new($idxfn); foreach( $number ? $number : (1..($rbh->{num} - 1)) ){ if( !(($y, $m, $d, $t) = $rbh->{"$_.title"} =~ /(\d+)\.(\d+).(\d+),(.*)/) ){ @@ -127,6 +133,9 @@ sub builddata($$$$$$) $dat{"$currid.content"} = $rbh->{"$_.content"}); $dat{"$currid.short"} = ("$c[0]\n$c[1]\n$c[2]\n$c[3]\n"); + $idx->delete($currid) if( $idx->findkey($currid) ); + $idx->insert($currid, $rbh->{"$_.content"}); + if( !$contentonly ){ debugmsg("\tbuilding $currid linking... "); if( $dat{$currid} ){ @@ -163,6 +172,9 @@ sub builddata($$$$$$) } } untie %dat; + $idx->sync(); + undef $idx; + chmod 0666, $idxfn; } sub getdir($$$$$) -- cgit v1.2.3