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