Monday, November 08, 2010 at 12:04 AM.
system.verbs.builtins.mainResponder.search.server.htmlSearch
on htmlSearch (adrPageTable, fname, flShowSiteNames=true, altColor="#F5F5DC", feedback=true, indexName=nil, adrFilterCallback=nil) { <<Create a search request, call the search script, and return the results. <<The searchRequest table should contain: <<origSearchString <<start <<maxHitsPerPage <<adrMemberInfo <<May be null. <<Otherwise, the membership info address for this user. <<sitesList <<The list of sites to search. <<Changes <<8/11/02; 2:14:52 AM by JES <<New optional parameter, adrFilterCallback, which is the address of a search result filter callback. Passed to mainResponder.search.server.doSearch. local (searchRequest, argTable); new (tableType, @searchRequest); new (tableType, @argTable); <<Parse the search args into a table. webserver.parseArgs (adrPageTable^.searchArgs, @argTable); <<Populate the searchRequest table. bundle { //get the search string searchRequest.searchString = argTable.q}; bundle { //get the start parameter try { //start searchRequest.start = string.urlDecode (argTable.s); searchRequest.start = number (searchRequest.start)} else { searchRequest.start = 1}}; bundle { //get max hits per page parameter try { //max hits per page searchRequest.maxHitsPerPage = string.urlDecode (argTable.m); searchRequest.maxHitsPerPage = number (searchRequest.maxHitsPerPage)} else { searchRequest.maxHitsPerPage = 25}}; searchRequest.fname = fname; searchRequest.flShowSiteNames = flShowSiteNames; searchRequest.altColor = altColor; searchRequest.feedback = feedback; bundle { //get the site if defined (argTable.site) { searchRequest.site = argTable.site}}; bundle { //get the adrMemberInfo parameter searchRequest.adrMemberInfo = nil; try { searchRequest.adrMemberInfo = adrPageTable^.adrMemberInfo}}; <<Add info to the page table. adrPageTable^.searchString = searchRequest.searchString; if indexName != nil { searchRequest.indexName = indexName} else { searchRequest.indexName = "Index.root"}; local (s = mainResponder.search.server.doSearch (@searchRequest, adrFilterCallback)); return (s)} <<bundle //test code <<htmlSearch (@temp.p, "google")
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.