delete $cache->{swish_data};
delete $cache->{swish_exact_data};
delete $cache->{index_data};
+ delete $cache->{index_delimiter};
my @page_fields; # names of fields
my %page_max = ();
# default line_delimiter if using
my $page_line_delimiter = $config->{indexer}->{$field}->{page_line_delimiter} || '<br/>';
+ $cache->{index_delimiter}->{$field} = $config->{indexer}->{$field}->{index_delimiter};
foreach my $x (@{$config->{indexer}->{$field}->{$tag}}) {
my ($s,$se,$d,$i,$il) = (1,0,1,0,0);
$s = 0 if (lc($x->{type}) eq "display");
$d = 0 if (lc($x->{type}) eq "swish");
- ($s,$se,$d,$i) = (0,0,0,1) if (lc($x->{type}) eq "index");
+ ($s,$se,$d,$i) = (0,1,0,1) if (lc($x->{type}) eq "index");
($s,$se,$d,$i) = (0,1,0,0) if (lc($x->{type}) eq "swish_exact");
($s,$se,$d,$i,$il) = (0,1,0,0,1) if (lc($x->{type}) =~ /^lookup/);
}
if (! $iterate_by_page) {
+ my $idel = $x->{index_delimiter};
# fill data in index
- foreach my $d (@index_data) {
- $index->insert($field, $d, $path);
+ foreach my $tmp (@index_data) {
+ my $i = $d = $tmp;
+ if ($idel && $tmp =~ m/$idel/) {
+ ($i,$d) = split(/$idel/,$tmp);
+ }
+ $index->insert($field, $i, $d, $path);
}
@index_data = ();
}
$xml .= xmlify($field."_swish_exact", unac_string($codepage,'xxbxx '.$swish_exact_data.' xxexx'));
}
- foreach my $d (@{$cache->{index_data}->{$field}->[$page]}) {
- $index->insert($field, $d, $path);
-#print STDERR "index $field: $d [$path]\n";
+ my $idel = $cache->{index_delimiter}->{$field};
+ foreach my $tmp (@{$cache->{index_data}->{$field}->[$page]}) {
+ my $i = $tmp;
+ my $d = $tmp;
+ if ($idel && $tmp =~ m/$idel/) {
+ ($i,$d) = split(/$idel/,$tmp);
+ }
+ $index->insert($field, $i, $d, $path);
+#print STDERR "index [$idel] $field: $i --> $d [$path]\n";
}
}
use strict qw(vars);
use vars qw($Count);
use HTML::Entities;
+use URI::Escape;
use DBI;
}
$sql = "create table $field (
item varchar(255),
+ display text,
count int,
ord int,
primary key (item)
my $field = shift;
my $index_data = shift || print STDERR "\$index->insert($field,NULL,...)";
- my $ident = shift || ''; # e.g. library id
+ my $display = shift || $index_data;
if (! $index_data) {
print STDERR "\$index->insert() -- no value to insert\n";
if (! $c_table->{$field}->{$uc}) {
#print stderr "in index: $index_data\n";
$c_table->{$field}->{$uc} = $index_data;
+ $c_table->{$field}->{$uc}->{display} = $display;
$c_count->{$field}->{$uc} = 1;
} else {
$c_count->{$field}->{$uc}++;
my @sql_args;
- my $sql = "select item,ord from $field";
+ my $sql = "select item,display,ord from $field";
if ($where) {
my $sql2 = "select ord from $field where upper(item) like upper(?)||'%'";
$sth->execute() || die "execute: $sql; ".$self->{dbh}->errstr();
my @arr;
while (my $row = $sth->fetchrow_hashref) {
- $row->{item} = HTML::Entities::encode($row->{item},'<>&"');
+ $row->{item} = HTML::Entities::encode($row->{item},' <>&"');
+ $row->{display} = HTML::Entities::encode($row->{display},'<>&"');
push @arr,$row;
}
return @arr;
my @keys = sort keys %{$c_table->{$table}};
$self->bench("Dumping data into $table");
- my $sql = "insert into $table (ord,item,count) values (?,?,?)";
+ my $sql = "insert into $table (ord,item,display,count) values (?,?,?,?)";
my $sth = $self->{dbh}->prepare($sql) || die "sql: $sql; ".$self->{dbh}->errstr();
my $ord = 0;
foreach my $key (@keys) {
$sth->execute(++$ord,
$c_table->{$table}->{$key},
+ $c_table->{$table}->{$key}->{display},
$c_count->{$table}->{$key}
);
}