1 | #! perl # mandatory |
1 | #! perl # mandatory |
2 | |
2 | |
3 | our $SCHEDULE_INTERVAL = $cf::CFG{extractor_schedule_interval} || 3600; |
3 | our $SCHEDULE_INTERVAL = $cf::CFG{extractor_schedule_interval} || 3600; |
4 | |
4 | |
5 | use JSON::XS; |
5 | use JSON::XS; |
6 | |
6 | |
7 | my $db_mapinfo = cf::sync_job { cf::db_table "tag-mapinfo" }; # info/cache for maps |
7 | my $db_mapinfo = cf::sync_job { cf::db_table "tag-mapinfo" }; # info/cache for maps |
8 | my $db_target = cf::sync_job { cf::db_table "tag-target" }; # tag => maps |
8 | my $db_target = cf::sync_job { cf::db_table "tag-target" }; # tag => maps |
… | |
… | |
154 | sub find($) { |
154 | sub find($) { |
155 | my ($tag) = @_; |
155 | my ($tag) = @_; |
156 | |
156 | |
157 | my @res; |
157 | my @res; |
158 | |
158 | |
159 | utf8::encode $tag; |
159 | utf8::encode (my $key = $tag); |
160 | BDB::db_get $db_target, undef, $tag, my $data; |
160 | BDB::db_get $db_target, undef, $key, my $data; |
161 | utf8::decode $data; |
161 | utf8::decode $data; |
162 | |
162 | |
163 | for my $map ( |
163 | for my $map ( |
164 | grep $_, |
164 | grep $_, |
165 | map { cf::map::find $_ } |
165 | map { cf::map::find $_ } |
166 | grep s/^s//, |
166 | grep s/^s//, |
167 | split /\x00/, $data |
167 | split /\x00/, $data |
168 | ) { |
168 | ) { |
|
|
169 | warn "map $map,$tag\n";#d# |
169 | $map->load; |
170 | $map->load; |
170 | |
171 | |
|
|
172 | push @res, $map->find_tagged_objects ($tag); |
|
|
173 | |
171 | warn "tag<$tag>map<$map>\n";#d# |
174 | warn "tag<$tag>map<$map>res<@res>\n";#d# |
172 | } |
175 | } |
173 | |
176 | |
174 | @res |
177 | @res |
175 | } |
178 | } |