2013-06-30 231 views
0

我正在開發使用ColdFusion的Flash Builder \ Flex移動應用程序。我需要幫助來解決我的搜索功能。當我嘗試搜索某些東西時,我必須輸入確切的單詞,否則它不會返回任何內容。自動完成搜索柔性移動

enter image description here

如果我只鍵入"app",而不是"applet",它沒有返回。

搜索功能:

<cffunction name="getwordsSummaryByTerm" output="false" access="remote" returntype="Query" > 
    <cfargument name="searchStr" type="string" required="true" /> 
    <cfset var qItem=""> 
    <cfquery name="qItem" datasource="databaseyo"> 
     SELECT * 
     FROM words 
     WHERE term = <CFQUERYPARAM CFSQLTYPE="CF_SQL_VARCHAR" VALUE="#ARGUMENTS.searchStr#"> 
    </cfquery> 
    <cfreturn qItem> 
</cffunction> 

Flex代碼:

protected function doSearch(event:MouseEvent):void 
{ 
    if(searchTerm.text!="") 
    { 
     getAllwordsResult.token = wordsService.getwordsSummaryByTerm(searchTerm.text); 
    } 
    else 
    { 
     getAllwordsResult.token = wordsService.getAllwords(); 
    } 
} 
+1

我認爲你的意思是「ColdFusion」而不是「冷聚變」。在版本3中刪除了這個空間,以區別於工作發佈中的「核物理」。我可以理解爲什麼招聘人員可能會犯錯;但作爲使用該技術的程序員,您應該能夠查看它是如何拼寫的。 – JeffryHouser

回答

5

嘗試更新查詢,以便將搜索在LIKE值,而不是特定等於VALUE。

SELECT * 
FROM words 
WHERE term LIKE <CFQUERYPARAM CFSQLTYPE="CF_SQL_VARCHAR" VALUE="%#ARGUMENTS.searchStr#%"> 

請注意現在環繞查詢參數值的「%」。

如果你想設置它,那麼輸入的內容將返回以相同方式開始的單詞(即,輸入「app」返回「applet」和「apple」,但不是「dapple」),則只需刪除第一個參數值中的「%」。

+0

非常感謝,它終於工作了<3 – sayydo

+0

@sayydo - 另外,這純粹是關於SQL。 「等號」運算符僅查找完全匹配。要找到部分匹配,您必須使用['like'](http://www.w3schools.com/SQl/sql_like.asp)和[[wildcard]](http://www.w3schools.com/SQl/) sql_wildcards.asp)。 – Leigh