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 |
… | |
… | |
152 | }; |
152 | }; |
153 | |
153 | |
154 | sub find($) { |
154 | sub find($) { |
155 | my ($tag) = @_; |
155 | my ($tag) = @_; |
156 | |
156 | |
157 | my @res; |
|
|
158 | |
|
|
159 | utf8::encode $tag; |
157 | utf8::encode (my $key = $tag); |
160 | BDB::db_get $db_target, undef, $tag, my $data; |
158 | BDB::db_get $db_target, undef, $key, my $data; |
161 | utf8::decode $data; |
159 | utf8::decode $data; |
162 | |
160 | |
163 | for my $map ( |
161 | map { $_->load; $_->find_tagged_objects ($tag) } |
164 | grep $_, |
162 | grep $_, |
165 | map { cf::map::find $_ } |
163 | map { cf::map::find $_ } |
166 | grep s/^s//, |
164 | grep s/^s//, |
167 | split /\x00/, $data |
165 | split /\x00/, $data |
168 | ) { |
|
|
169 | $map->load; |
|
|
170 | |
|
|
171 | warn "tag<$tag>map<$map>\n";#d# |
|
|
172 | } |
|
|
173 | |
|
|
174 | @res |
|
|
175 | } |
166 | } |