⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 search.cfc

📁 Yahoo!search API. 用于搜索引擎接口
💻 CFC
📖 第 1 页 / 共 2 页
字号:
	<cfset theURL = theURL & "&region=#urlEncodedFormat(arguments.region)#">
	
	<cfif not listFindNoCase("all,any,phrase", arguments.type)>
		<cfthrow message="Invalid type (#arguments.type#) passed. Only all, any, or phrase allowed.">
	</cfif>
	<cfset theURL = theURL & "&type=#arguments.type#">
	
	<cfif arguments.results lt 1 or arguments.results gt 100>
		<cfthrow message="Invalid results (#arguments.results#) passed. Max is 100, min is 1.">
	</cfif>
	<cfset theURL = theURL & "&results=#arguments.results#">

	<cfif arguments.start lt 1 or arguments.start + arguments.results gt 1000>
		<cfthrow message="Invalid start (#arguments.start#) passed. Max value of start + results value must be less than 1000, min is 1.">
	</cfif>	
	<cfset theURL = theURL & "&start=#arguments.start#">
	
	<cfif not listFindNoCase("any,html,msword,pdf,ppt,rss,txt,xls", arguments.format)>
		<cfthrow message="Invalid format (#arguments.format#) passed. Only any, html, msword, pdf, ppt, rss, txt, xls allowed.">
	</cfif>
	<cfset theURL = theURL & "&format=#arguments.format#">

	<cfif arguments.adult>
		<cfset theURL = theURL & "&adult_ok=1">
	</cfif>

	<cfif arguments.similar>
		<cfset theURL = theURL & "&similar_ok=1">
	</cfif>

	<cfif len(arguments.language)>
		<cfset theURL = theURL & "&language=#arguments.language#">
	</cfif>
	
	<cfset theURL = theURL & "&country=#arguments.country#">
		
	<cfif len(arguments.site)>
		<cfloop index="x" from="1" to="#min(30, listLen(arguments.site))#">
			<cfset theURL = theURL & "&site=#listGetAt(arguments.site,x)#">
		</cfloop>
	</cfif>

	<cfif len(arguments.subscription)>
		<cfset theURL = theURL & "&subscription=#arguments.subscription#">
	</cfif>
	
	<cfif len(arguments.license)>
		<cfloop index="x" from="1" to="#min(30, listLen(arguments.license))#">
			<cfset theURL = theURL & "&license=#listGetAt(arguments.license,x)#">
		</cfloop>
	</cfif>

	<cfhttp url="#theURL#" result="result" charset="utf-8" />

	<cfif len(result.fileContent) and isXml(result.fileContent)>
		<cfset xmlResult = xmlParse(result.fileContent)>
		
		<cfif structKeyExists(xmlResult, "error")>
			<cfthrow message="Map API Error: #xmlResult.error.message.xmlText#">
		</cfif>
		
		<cfset totalResults = xmlResult.resultSet.xmlAttributes.totalResultsAvailable>
		
		<cfloop index="x" from="1" to="#xmlResult.resultSet.xmlAttributes.totalResultsReturned#">
			<cfset node = xmlResult.resultSet.xmlChildren[x]>
			<cfset title = node.title.xmlText>
			<cfset summary = node.summary.xmlText>
			<cfset iUrl = node.url.xmlText>
			<cfset clickurl = node.clickurl.xmlText>
			<cfset mimetype = node.mimetype.xmlText>
			<cfset modificationdate = epochTimeToDate(node.modificationdate.xmlText)>
			<cfset cacheurl = node.cache.url.xmlText>
			<cfset cachesize = node.cache.size.xmlText>
			
			<cfset queryAddRow(q)>
			<cfset querySetCell(q, "title", title)>
			<cfset querySetCell(q, "summary", summary)>
			<cfset querySetCell(q, "url", iUrl)>
			<cfset querySetCell(q, "clickurl", clickurl)>
			<cfset querySetCell(q, "mimetype", mimetype)>
			<cfset querySetCell(q, "modificationdate", modificationdate)>
			<cfset querySetCell(q, "totalavailable", totalResults)>
			<cfset querySetCell(q, "cacheurl", cacheurl)>
			<cfset querySetCell(q, "cachesize", cachesize)>
			
		</cfloop>
	</cfif>

	<cfreturn q>
</cffunction>

<cffunction name="relatedSuggestion" returnType="array" output="false" access="public"
			hint="Retrieves related search term suggestions.">
	<cfargument name="query" type="string" required="true" hint="Search terms.">
	<cfargument name="results" type="numeric" required="false" default="10" hint="Number of results. Max is 50.">
	
	<cfset var result = "">
	<cfset var xmlResult = "">
	<cfset var theURL = "http://search.yahooapis.com/WebSearchService/V1/relatedSuggestion?appid=">	
	<cfset var suggestions = arrayNew(1)>
	<cfset var x = "">
	
	<cfset theURL = theURL & getAppID()>
	<cfset theURL = theURL & "&query=#urlEncodedFormat(arguments.query)#">

	<cfif arguments.results lt 1 or arguments.results gt 50>
		<cfthrow message="Invalid results (#arguments.results#) passed. Max is 50, min is 1.">
	</cfif>
	<cfset theURL = theURL & "&results=#arguments.results#">

	<cfhttp url="#theURL#" result="result" charset="utf-8" />

	<cfif len(result.fileContent) and isXml(result.fileContent)>
		<cfset xmlResult = xmlParse(result.fileContent)>

		<cfif structKeyExists(xmlResult, "error")>
			<cfthrow message="Related Suggestion API Error: #xmlResult.error.message.xmlText#">
		</cfif>
		
		<cfif not structKeyExists(xmlResult.ResultSet, "Result")>
			<cfreturn suggestions>
		</cfif>
		
		<cfloop index="x" from="1" to="#arrayLen(xmlResult.ResultSet.Result)#">
			<cfset arrayAppend(suggestions, xmlResult.ResultSet.Result[x].xmlText)>
		</cfloop>
		
		<cfreturn suggestions>
	</cfif>
</cffunction>

<cffunction name="spellingSuggestion" returnType="array" output="false" access="public"
			hint="Retrieves spelling suggestions.">
	<cfargument name="query" type="string" required="true" hint="Word to use.">
	<cfset var result = "">
	<cfset var xmlResult = "">
	<cfset var theURL = "http://search.yahooapis.com/WebSearchService/V1/spellingSuggestion?appid=">	
	<cfset var suggestions = arrayNew(1)>
	<cfset var x = "">
	
	<cfset theURL = theURL & getAppID()>
	<cfset theURL = theURL & "&query=#urlEncodedFormat(arguments.query)#">

	<cfhttp url="#theURL#" result="result" charset="utf-8" />

	<cfif len(result.fileContent) and isXml(result.fileContent)>
		<cfset xmlResult = xmlParse(result.fileContent)>

		<cfif structKeyExists(xmlResult, "error")>
			<cfthrow message="Spelling Suggestion API Error: #xmlResult.error.message.xmlText#">
		</cfif>
		
		<cfif not structKeyExists(xmlResult.ResultSet, "Result")>
			<cfreturn suggestions>
		</cfif>
		
		<cfloop index="x" from="1" to="#arrayLen(xmlResult.ResultSet.Result)#">
			<cfset arrayAppend(suggestions, xmlResult.ResultSet.Result[x].xmlText)>
		</cfloop>
		
		<cfreturn suggestions>
	</cfif>
</cffunction>

</cfcomponent>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -