4 # FILE: SPT--GlobalSearchEngine.php 6 # Part of the Collection Workflow Integration System (CWIS) 7 # Copyright 2005-2013 Edward Almasy and Internet Scout Research Group 8 # http://scout.wisc.edu/cwis/ 20 # ---- PUBLIC INTERFACE -------------------------------------------------- 39 function Search($SearchString, $StartingResult = 0, $NumberOfResults = 10)
41 # save start time to use in calculating search time 44 # create OAI-SQ set specification from search string 45 $SetSpec =
"OAI-SQ!".$SearchString;
47 # perform global search 49 $SetSpec, $StartingResult, $NumberOfResults);
52 $this->LastSearchTime = $this->
GetMicrotime() - $StartTime;
54 # return results to caller 55 return $SearchResults;
66 function FieldedSearch($SearchStrings, $StartingResult = 0, $NumberOfResults = 10)
86 # ---- PRIVATE INTERFACE ------------------------------------------------- 100 # for each global search site 102 $DB->Query(
"SELECT * FROM GlobalSearchSites");
103 $SearchResults = array();
104 while ($SiteInfo = $DB->FetchRow())
106 # retrieve results from site 107 $SiteSearchResults = $this->
SearchSite($SiteInfo, $SetSpec);
109 # add results to result list 110 $SearchResults = array_merge($SearchResults, $SiteSearchResults);
120 function SearchScoreCmp($ResultA, $ResultB)
122 return ($ResultA[
"Search Score"] == $ResultB[
"Search Score"]) ? 0
123 : (($ResultA[
"Search Score"] < $ResultB[
"Search Score"]) ? 1 : -1);
125 usort($SearchResults,
"SearchScoreCmp");
127 # save number of results found 128 $this->NumberOfResultsAvailable = count($SearchResults);
130 # trim result list to match range requested by caller 131 $SearchResults = array_slice($SearchResults, $StartingResult, $NumberOfResults);
133 # return search results to caller 134 return $SearchResults;
145 # create OAI client and perform query 146 $Client =
new OAIClient($SiteInfo[
"OaiUrl"]);
147 $Client->SetSpec($SetSpec);
148 $QueryResults = $Client->GetRecords();
150 # for each result returned from query 151 foreach ($QueryResults as $Result)
153 # extract and save result data where available 155 $ResultData[
"Title"] =
156 isset($Result[
"metadata"][
"DC:TITLE"][0])
157 ? $Result[
"metadata"][
"DC:TITLE"][0] : NULL;
158 $ResultData[
"Description"] =
159 isset($Result[
"metadata"][
"DC:DESCRIPTION"][0])
160 ? $Result[
"metadata"][
"DC:DESCRIPTION"][0] : NULL;
162 isset($Result[
"metadata"][
"DC:IDENTIFIER"][0])
163 ? $Result[
"metadata"][
"DC:IDENTIFIER"][0] : NULL;
164 $ResultData[
"Full Record Link"] =
165 isset($Result[
"about"][
"SEARCHINFO"][
"FULLRECORDLINK"][0])
166 ? $Result[
"about"][
"SEARCHINFO"][
"FULLRECORDLINK"][0] : NULL;
167 $ResultData[
"Search Score"] =
168 isset($Result[
"about"][
"SEARCHINFO"][
"SEARCHSCORE"][0])
169 ? $Result[
"about"][
"SEARCHINFO"][
"SEARCHSCORE"][0] : NULL;
170 $ResultData[
"Cumulative Rating"] =
171 isset($Result[
"about"][
"SEARCHINFO"][
"CUMULATIVERATING"][0])
172 ? $Result[
"about"][
"SEARCHINFO"][
"CUMULATIVERATING"][0] : NULL;
173 $ResultData[
"Cumulative Rating Scale"] =
174 isset($Result[
"about"][
"SEARCHINFO"][
"CUMULATIVERATINGSCALE"][0])
175 ? $Result[
"about"][
"SEARCHINFO"][
"CUMULATIVERATINGSCALE"][0] : NULL;
177 # save site info for result 178 $ResultData[
"Site ID"] = $SiteInfo[
"SiteId"];
179 $ResultData[
"Site Name"] = $SiteInfo[
"SiteName"];
180 $ResultData[
"Site URL"] = $SiteInfo[
"SiteUrl"];
182 # add result data to search results 183 $SearchResults[] = $ResultData;
186 # return search results to caller 187 return $SearchResults;
196 list($usec, $sec) = explode(
" ", microtime());
197 return ((
float)$usec + (
float)$sec);
FieldedSearch($SearchStrings, $StartingResult=0, $NumberOfResults=10)
Performs a search across multiple fields and returns the trimmed results to the caller.
SQL database abstraction object with smart query caching.
NumberOfResults()
Gets the number of results returned in the last search.
SearchTime()
Gets the time taken to perform the previous search, in microseconds.
GetMicrotime()
Convenience function for getting the time in microseconds.
Search($SearchString, $StartingResult=0, $NumberOfResults=10)
Performs a keyword search using a specified search string and returns the results, starting with the one numbered with the starting result (default 0) and continuing until reaching the desired number of results (default 10).
PerformSearch($SetSpec, $StartingResult, $NumberOfResults)
Performs an OAI-SQ search.
GlobalSearchEngine()
Constructs a GlobalSearchEngine object.
SearchSite($SiteInfo, $SetSpec)
Searches one site with a specification of subset of records to be retrieved.
$NumberOfResultsAvailable