--- pandia/indexer 2025/06/27 02:14:47 1.2 +++ pandia/indexer 2025/06/27 16:20:30 1.3 @@ -1,7 +1,7 @@ #!/usr/bin/env perl # -# $Id: indexer,v 1.2 2025/06/27 02:14:47 snw Exp $ +# $Id: indexer,v 1.3 2025/06/27 16:20:30 snw Exp $ # Copyright (C) 2025 Coherent Logic Development LLC # # Author: Serena Willis @@ -9,6 +9,9 @@ # Licensed AGPL-3.0 # # $Log: indexer,v $ +# Revision 1.3 2025/06/27 16:20:30 snw +# Add blacklist +# # Revision 1.2 2025/06/27 02:14:47 snw # Initial operational capability # @@ -25,6 +28,7 @@ use Lingua::Stem; use DBI; use Data::Dumper; use Try::Tiny; +use Fcntl qw(:flock); my $dbh = ""; my $dsn = ""; @@ -33,6 +37,9 @@ $| = 1; print "pandia indexer v0.0.1\n"; print " Copyright (C) 2025 Coherent Logic Development LLC\n\n"; +open my $file, ">", "pandia_indexer.lock" or die $!; +flock $file, LOCK_EX|LOCK_NB or die "Unable to lock file $!"; + GetOptions("dbhost=s" => \$dbhost, "dbname=s" => \$dbname, "dbusername=s" => \$dbusername, @@ -113,11 +120,11 @@ while (my $hashref = $sth->fetchrow_hash $sthd->execute($url); my $sth = $dbh->prepare("INSERT INTO keywords (word, url, url_domain, word_count) VALUES (?, ?, ?, ?)"); - my $sths = $dbh->prepare("SELECT word_count FROM keywords WHERE word=?"); + my $sths = $dbh->prepare("SELECT word_count FROM keywords WHERE word=? AND url=?"); my $sthu = $dbh->prepare("UPDATE keywords SET word_count=word_count + 1 WHERE word=? AND url=?"); foreach my $word (@words) { $word =~ s/[^\x00-\x7F]//g; - $sths->execute($word); + $sths->execute($word, $url); if($sths->rows > 0) { $sthu->execute($word, $url);