📄 match_blobs_keywords
字号:
#!/usr/local/bin/perl# match_blobs - takes query string from query form, calls rank.c# incoming:# imgnum=108019&numblobs=2&b1=1,.5,1,0,0&b2=1,1,0,0,.5require "../../cgi/query_utils.p";require "../../cgi/schema.p";require "/elib/sys/bin/sql_utils_inf.p";$script_name = "blobs_query";$DEBUG = 0; # if 1, call only DB keyword match; if 2, don't call anything$FILTER = 1;&readParse(*input) || print "<p>No input data processed.<p>\n";$imgnum = $input{'imgnum'};$numblobs = $input{'numblobs'};$bloblist = $input{'bloblist'};$b1weights = $input{'b1'};$b2weights = $input{'b2'};$position = $input{'position'};$num_imgs = $input{'num_imgs'};$keywords = $input{'keywords'};$requested_imgs = $input{'requested_imgs'};($b1_overall,$b1_col,$b1_tex,$b1_loc,$b1_sha) = split(/\,/,$b1weights);($b2_overall,$b2_col,$b2_tex,$b2_loc,$b2_sha) = split(/\,/,$b2weights);if ($numblobs eq 1) { $overallweight = "$b1_overall"; $featureweights = "$b1_col,$b1_tex,$b1_loc,$b1_sha";} elsif ($numblobs eq 2) { $overallweight = "$b1_overall,$b2_overall"; $featureweights = "$b1_col,$b1_tex,$b1_loc,$b1_sha,$b2_col,$b2_tex,$b2_loc,$b2_sha";} else { if ($keywords ne "") { # no blobs selected, just use keywords $overallweight = ""; } else { # no blobs OR keywords selected; this is an error &print_err_msg; exit 0; }}printf "Content-type: text/html\n\n";if ($DEBUG) { print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>Blob Factory</TITLE>\n"; print "</HEAD>\n"; print "<BODY>\n"; print "<h2>From cgi-bin/match_blobs_keywords ... </h2>\n"; print "Here are the results from the query form. <p>\n"; print "imgnum: $imgnum<br>\n"; print "numblobs: $numblobs<br>\n"; print "bloblist: $bloblist<br>\n"; print "blob 1 weights: |$b1weights|<br>\n"; print "blob 2 weights: |$b2weights|<br>\n"; print "overallweight: |$overallweight|<br>\n"; print "featureweights: |$featureweights|<P>\n"; print "number of images to query: |$num_imgs|<br>\n"; print "position: $position<br>\n"; print "keywords: |$keywords|<br>\n"; print "requested_imgs: $requested_imgs<br>\n"; print "<p><hr><p>\n";}$keywords = &strip($keywords); # get rid of extra spaces$keywords =~ s/ and / /g; # get rid of "and,or,not"$keywords =~ s/ or / /g; $keywords =~ s/ not / /g;if ($keywords ne "") { # see if keywords are empty if ($DEBUG eq 2) { print "not sending keyword query to DB<br>\n"; $num_from_keywords = "NO_KW_NUM"; $imlist = "NO_IMLIST"; $dbtime = "NO_DB_TIME"; } else { ##### send keywords to DB to get a list of matches. ##### result --> $imlist of length $num_from_keywords ##### also set $dbtime to time taken by DB, if possible; otherwise, ##### set $dbtime = -1; $dbtime = -1; $u_k = uc($keywords); # was #$kw_query = "select imgnum from img_bw where diskname like '%$u_k%' or keywords like '%$u_k%' or description like '%$u_k%'"; $kw_query = ""; @words = split(/ /,$u_k); # parse the incoming string into words $first = 1; foreach $word (@words) { if ($first eq 0) { $kw_query = "$kw_query AND "; } $kw_query = "$kw_query (diskname like '%$word%' or keywords like '%$word%' or description like '%$word%')"; $first = 0; } $kw_query = "select imgnum from img_bw where $kw_query"; $tmp = &get_multiple_records($kw_query); $num_from_keywords = $num_matches; open(FH, "$tmp") || die "Can't open tmp file for reading"; while(<FH>) { chomp($_); $imlist .= "$_ "; } close(FH); if ($DEBUG eq 1) { print "<p>Database results:<p>\n"; print "kw_query: $kw_query<p>\n"; print "num_from_keywords: $num_from_keywords<p>\n"; print "imlist: $imlist<p>\n"; print "<p><hr><p>\n"; } }}$server = $ENV{'SERVER_PORT'};if ($server == 8080) { $head = "/elib/sys/test/httpd";} else { $head = "/elib/sys/httpd";}if ($overallweight eq "") { # query using just keywords $cmd = "$head/cgi-bin/blobrank/query_keywords_only $num_from_keywords $imlist $num_imgs \"$keywords\" $dbtime $head";} elsif ($keywords ne "") { # query using blob(s) + keywords $cmd = "$head/cgi-bin/blobrank/query_partial_randomaccess $imgnum $numblobs $bloblist $overallweight $featureweights $position $num_from_keywords $imlist $num_imgs \"$keywords\" $dbtime $head";} else { # query using just blob(s) if ($FILTER) { $cmd = "$head/cgi-bin/blobrank/query_filter $imgnum $numblobs $bloblist $overallweight $featureweights $position $num_imgs $requested_imgs $head"; } else { $cmd = "$head/cgi-bin/blobrank/query_full $imgnum $numblobs $bloblist $overallweight $featureweights $position $num_imgs $head"; }}if (!$DEBUG) { print `$cmd`;} else { print "cmd: |$cmd|\n"; print "</BODY>\n"; print "</HTML>\n";}sub print_err_msg { printf "Content-type: text/html\n\n"; print "<HTML>\n"; print "<HEAD>\n"; print "<TITLE>Blobworld Query</TITLE>\n"; print "</HEAD>\n"; print "<BODY bgcolor=#FFFFFF>\n"; ##print "<BODY>\n"; print "<h3>Please select a blob from the Blobworld image, "; print "or type a keyword.</h3>\n"; print "</BODY>\n"; print "</HTML>\n";}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -