#!/usr/bin/perl $thisscript = 'onix.cgi'; $maxnum = '100'; $start = '1'; $next = $start + $maxnum; # Use these for my machine $swish = '/usr/bin/swish-e'; $index = '/home/default/htdocs/proto/onix/onix.index'; $basepath = '/home/default/htdocs/proto/onix/'; require ('../lib.pl'); &get_data; if ($FORM{'start'} =~ /\w/) { $start = $FORM{'start'}; } $startplus = $start; if ($FORM{'parse'} =~ /\w/) { &print_preface; &print_form; print "Only a select few fields are displayed. You can also see the raw record.\n"; print "
\n"; $_ = `xsltproc onix.xslt $FORM{'parse'}`; s/\<\;/\/g; print $_; &print_footer; exit; } if ($FORM{'fetch'} =~ /\w/) { &fetch_record; } if ($FORM{'query'} =~ /\w/) { if ($FORM{'field'} =~ /\w/) { $query = $FORM{'field'}."=".$FORM{'query'}; } else { # $query = "b004=(".$FORM{'query'}.") or b028=(".$FORM{'query'}.") or b028=(".$FORM{'query'}.") or b081=(".$FORM{'query'}.") or d101=(".$FORM{'query'}.") or d104=(".$FORM{'query'}.") or b203=(".$FORM{'query'}.")"; $query = $FORM{'query'}; } } else { &print_preface; &print_data_summary; &print_form; &print_footer; exit; } &print_preface; if ($query =~ /\w/) { open(SWISH, "$swish -w '$query' -m $maxnum -b $start -x \"::::::::::::::\n\" -f $index |"); #$testtwo = `$swish -w $query -x "::::<creator>\n" -f $index`; while (<SWISH>) { # First, check to see if search produced an error chop; if ($_ eq "err: no results") {&search_error("There were no items that matched your search request: $query. Please try again.");} if ($_ eq "err: could not open index file") {&search_error("Could not open the index file $index.");} if ($_ eq "err: no search words specified") {&search_error("Please enter at least one search word.");} if ($_ eq "err: a word is too common") {&search_error("One of your search terms is too common, please try again.");} if ($_ =~ /^#\sNumber/) { ($trash, $numhits) = split(/\: /, $_); } if ($_ !~ /^#|^\./) { $count++; $path = $b004 = $d104 = $b028 = $b029 = $b081 = $b203 = $b031 = ''; # # IF WANT TO DISPLAY MORE THAN THE FIELDS BELOW, MUST CHANGE THE # harvest.conf FILE AND REINDEX TO ADD THE REQUIRED PROPERTIES # ($path, $b028, $b029, $b081, $b004, $b203, $b031, $d104) = split(/::/, $_); # ($first, $second, $third) = split(/\//, $path); # $pathtwo = $first."/".$second; # $source = $names{$pathtwo}; ($shortpath, $stuff, $stuff) = split(/\//, $path); if ($b028 =~ /\w/) { $item_title = $b028; # if ($b029 =~ /\w/) { # $item_title = $item_title.": ".$b029; # } } elsif ($b203 =~ /\w/) { $item_title = $b203; } elsif ($d104 =~ /\w/) { $item_title = $d104; } else { $item_title = $b031; } push(@results, "<li value=\"$startplus\"><span class=\"title\"><a href=\"?parse=$path\">$item_title</a> - $b004 - $b081</span></li>\n"); ++$startplus; } } &print_results; print "</ol>\n\n"; } else { &print_form; } &print_footer; sub print_form { print <<END; <form method="get" action="$thisscript"> Search <select name="field"> <option value="" selected="selected">any field</option> <option value="title">title</option> <option value="d101">description</option> <option value="b081">publisher</option> <option value="b004">ISBN</option> <option>---------------</option> <option>a001</option> <option>a002</option> <option>a197</option> <option>audiencecode</option> <option>audiencerange</option> <option>availabilitycode</option> <option>b003</option> <option>b004</option> <option>b005</option> <option>b006</option> <option>b009</option> <option>b012</option> <option>b013</option> <option>b014</option> <option>b015</option> <option>b017</option> <option>b018</option> <option>b019</option> <option>b023</option> <option>b024</option> <option>b025</option> <option>b026</option> <option>b028</option> <option>b029</option> <option>b030</option> <option>b031</option> <option>b034</option> <option>b035</option> <option>b036</option> <option>b037</option> <option>b038</option> <option>b039</option> <option>b040</option> <option>b042</option> <option>b043</option> <option>b044</option> <option>b045</option> <option>b046</option> <option>b047</option> <option>b056</option> <option>b057</option> <option>b058</option> <option>b059</option> <option>b061</option> <option>b062</option> <option>b064</option> <option>b065</option> <option>b066</option> <option>b067</option> <option>b068</option> <option>b069</option> <option>b070</option> <option>b073</option> <option>b074</option> <option>b075</option> <option>b076</option> <option>b077</option> <option>b078</option> <option>b079</option> <option>b081</option> <option>b083</option> <option>b087</option> <option>b089</option> <option>b090</option> <option>b171</option> <option>b202</option> <option>b203</option> <option>b209</option> <option>b210</option> <option>b218</option> <option>b219</option> <option>b220</option> <option>b221</option> <option>b225</option> <option>b241</option> <option>b242</option> <option>b243</option> <option>b244</option> <option>b246</option> <option>b247</option> <option>b248</option> <option>b249</option> <option>b251</option> <option>b252</option> <option>b253</option> <option>b256</option> <option>b281</option> <option>b284</option> <option>b291</option> <option>b305</option> <option>b306</option> <option>b333</option> <option>b334</option> <option>b335</option> <option>b352</option> <option>b353</option> <option>b355</option> <option>b381</option> <option>b383</option> <option>b385</option> <option>b388</option> <option>b394</option> <option>barcode</option> <option>basicmainsubject</option> <option>basicversion</option> <option>bible</option> <option>c093</option> <option>c094</option> <option>c095</option> <option>cityofpublication</option> <option>complexity</option> <option>containeditem</option> <option>contributor</option> <option>contributorrole</option> <option>copyrightyear</option> <option>countrycode</option> <option>countryofpublication</option> <option>coverimageformatcode</option> <option>coverimagelink</option> <option>coverimagelinktypeco</option> <option>currencycode</option> <option>d101</option> <option>d102</option> <option>d103</option> <option>d104</option> <option>d107</option> <option>d108</option> <option>d109</option> <option>discountcode</option> <option>discountcoded</option> <option>discountcodetype</option> <option>discountcodetypename</option> <option>emailaddress</option> <option>extent</option> <option>f114</option> <option>f115</option> <option>f116</option> <option>f117</option> <option>faxnumber</option> <option>g126</option> <option>g127</option> <option>g129</option> <option>h134</option> <option>h208</option> <option>idvalue</option> <option>illustrations</option> <option>imprint</option> <option>imprintname</option> <option>j136</option> <option>j137</option> <option>j138</option> <option>j141</option> <option>j142</option> <option>j143</option> <option>j145</option> <option>j148</option> <option>j149</option> <option>j150</option> <option>j151</option> <option>j152</option> <option>j153</option> <option>j154</option> <option>j155</option> <option>j156</option> <option>j157</option> <option>j158</option> <option>j159</option> <option>j160</option> <option>j161</option> <option>j192</option> <option>j260</option> <option>j266</option> <option>j268</option> <option>j269</option> <option>j292</option> <option>j363</option> <option>j364</option> <option>j378</option> <option>j387</option> <option>j396</option> <option>k167</option> <option>language</option> <option>measure</option> <option>measurement</option> <option>measuretypecode</option> <option>measureunitcode</option> <option>mediafile</option> <option>n338</option> <option>n339</option> <option>n386</option> <option>namecodetype</option> <option>namecodevalue</option> <option>notificationtype</option> <option>numberofpages</option> <option>othertext</option> <option>packquantity</option> <option>persondate</option> <option>personnameinverted</option> <option>price</option> <option>priceamount</option> <option>pricetypecode</option> <option>prize</option> <option>product</option> <option>productform</option> <option>productformdetail</option> <option>productformfeature</option> <option>productidentifier</option> <option>productidtype</option> <option>productwebsite</option> <option>productwebsitedescri</option> <option>productwebsitelink</option> <option>professionalaffiliat</option> <option>publicationdate</option> <option>publisher</option> <option>publishername</option> <option>recordreference</option> <option>recordsourcetype</option> <option>relatedproduct</option> <option>religioustext</option> <option>salesrestriction</option> <option>salesrights</option> <option>sequencenumber</option> <option>series</option> <option>set</option> <option>subject</option> <option>subtitle</option> <option>suppliername</option> <option>suppliersan</option> <option>supplydetail</option> <option>telephonenumber</option> <option>text</option> <option>textcaseflag</option> <option>textformat</option> <option>texttypecode</option> <option>title</option> <option>titletext</option> <option>titletype</option> </select> for <input type="text" name="query" size="20" /> <input type="submit" value="Go!" /> </form> END } sub print_preface { print "Content-type: text/html\n\n"; print <<END; <html> <head> <title>ONIX Records for Libraries: Search

[ Prototype Server Home | ONIX Records for Libraries Home ]

ONIX Records for Libraries: Search

END } sub print_results { $segments = $numhits/$maxnum; print "

Your search for $FORM{'query'} found $numhits items. You may also search again.

\n
    \n"; $starthits = 1; $hitscount = 1; if ($numhits > $maxnum) { while ($hitscount <= $segments) { print "[ $starthits - $next ] - \n"; ++$hitscount; $starthits = $next; $next = $next + $maxnum; } print "[ $starthits - $numhits ]\n
    \n"; } foreach $hit (@results) { print $hit; } } sub print_footer { print < END } sub search_error { $error_message = $_[0]; print "

    $error_message

    \n"; &print_form; &print_footer; exit; } sub fetch_record { $recordpath = $basepath.$FORM{'fetch'}; open (INFILE, $recordpath); &print_preface; while () { s/\/\>\;/g; print "$_
    "; } &print_footer; exit; } sub print_data_summary { $line = `grep "files indexed" report`; ($something, $nothing) = split(/\s/, $line); print <You are searching over 100,000 records from these publishers. This is a demonstration prototype only and absolutely no guarantees are made regarding this service.

    END }