Apache flex flex中冗长XML的autosuggest组件

Apache flex flex中冗长XML的autosuggest组件,apache-flex,autosuggest,Apache Flex,Autosuggest,我有一个autosuggest库,我一直在我的项目中使用它。我现在有一个文本输入,我必须使用这个库。但这一次输入有大约90万条记录。i、 e,一个有900000个节点的xml。当我将它与组件一起使用时,它可以工作,但速度变慢了,可能是因为每次按键时都会过滤xmllistcollection。每次按键需要2-3秒刷新。有没有办法加快这个过程? 我在本地机器上测试了这个xml。对于我的autosuggest小部件,我在keyUp上使用clearTimeout和setTimeout来确定它们何时完成了

我有一个autosuggest库,我一直在我的项目中使用它。我现在有一个文本输入,我必须使用这个库。但这一次输入有大约90万条记录。i、 e,一个有900000个节点的xml。当我将它与组件一起使用时,它可以工作,但速度变慢了,可能是因为每次按键时都会过滤xmllistcollection。每次按键需要2-3秒刷新。有没有办法加快这个过程?
我在本地机器上测试了这个xml。

对于我的autosuggest小部件,我在keyUp上使用clearTimeout和setTimeout来确定它们何时完成了输入。如果他们能每750ms按一次键(对一个体面的打字员来说并不难),那么我会等到他们打字完毕,然后再进行搜索(或过滤)


我想你应该期待一些900K记录的减速。我会等到用户键入几个字符,然后加载数据的子集。我假设这就是应用程序——比如Firefox——或者搜索引擎——比如Google——所做的。
private var _timeoutID:uint=0;

private function onKeyUp(event:KeyboardEvent):void
{

    if(event.keyCode == Keyboard.ENTER)
    {
        //do search immediately
        clearTimeout(_timeoutID);
        doSearch()
    }
    else if (event.keyCode == Keyboard.ESCAPE)
    {
        //canel search
        clearTimeout(_timeoutID);
    }
    else
    {
        //begin timer
        clearTimeout(_timeoutID);
        _timeoutID = setTimeout(doSearch, 750 );
    }
}
private function doSearch():void
{
    //filter xmlcollection here
}