2013-06-30 3 views
0

Я разрабатываю приложение Flash Builder \ Flex Mobile с использованием ColdFusion. Мне нужна помощь, чтобы исправить мою функцию поиска. Когда я пытаюсь что-то искать, я должен ввести точное слово или ничего не возвращает.auto complete search flex mobile

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 значения, а не конкретное РАВНО значение.

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

Обратите внимание на «%», которые теперь обертывают значение в параметре запроса.

Если вы хотите настроить его, то, что набирается, возвращает слова, которые начинаются одинаково (например, ввод текста для «приложения» возвращает «апплет» и «яблоко», но не «dapple»), а затем просто удалите первый «%» от значения параметра.

+0

спасибо большое, он наконец-то сработал <3 – sayydo

+0

@sayydo - В стороне, это чисто о SQL. Оператор 'equals' находит только точные совпадения. Чтобы найти частичные совпадения, вы должны использовать ['like'] (http://www.w3schools.com/SQl/sql_like.asp) с [' wildcard'] (http://www.w3schools.com/SQl/ sql_wildcards.asp). – Leigh