`
superytmf
  • 浏览: 19351 次
  • 性别: Icon_minigender_1
  • 来自: 广州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

类似Google搜索提示的两种做法

阅读更多
做了个简单的搜索提示程序,类似google之类的搜索提示,就是输入一个内容时,会把开头对得上的内容显示出来。下面可以测试看看:


呵呵,这里没有显示有多少条结果,当然也要做到统计也是可以的。这里只做简单的显示。
下面就说说两种做法。
第一种,是在用户输入提示信息的时候,把用户输入的信息跟应用中存的数据进行比较,找出匹配的数据,然后 在list组件里显示出来

                      //输入文本内容变化事件
                        private function inputChangeEvent():void
                        {
                                //每次输入文字变化,都检索一下,查看数据是否变化
                                if(currMsg != searchText.text)
                                {
                                        currMsg = searchText.text;
                                        var seachData:ArrayCollection = new ArrayCollection();
                                        if(currMsg != "")
                                        {
                                                //在这里分析所有的内容,找出符合的内容
                                                for(var i:int = 0; i < source.length; i++)
                                                {
                                                        //逐个检索,是否具有输入的内容,有则存放进去
                                                        if(source[i].label.indexOf(currMsg) == 0)
                                                        {
                                                                seachData.addItem(source[i]);
                                                        }
                                                }
                                        }
                                        //显示是否有相关的搜索相关信息,如果没有就显示默认信息
                                        if(seachData.length == 0)
                                        {
                                                seachData = defaultData;
                                        }
                                        //显示出与搜索相关的信息
                                        searchMsgList.visible = true;
                                        searchMsgList.dataProvider = seachData;
                                }
                        }

恩,该函数是当输入文本框的内容有变化时触发的。代码的注释已经相当清晰了

接下来看另外一种处理发方法。其实大体的都差不多,这里只是对数据源刚传进来的时候,就马上对数据进行分析,归类,逐个分析,把具有相同内容的数据存放在一个数组里,最后把这些数据都和搜索内容捆绑,存放到一个集合里。所以当用户录入信息时,直接根据输入内容那分类好的数组就可以了
下面是传输数据源时的代码

                       /**
                         * 设置需要搜索的内容
                         * @param:内容数组
                         */  
                        public function setSearchDatas(source:Array):void
                        {
                                //这里是数据一传递进来,就开始做分析
                                //对这里里面的所有数据进行检索分类,以方便输入查询
                                for(var i:int = 0; i < source.length; i++)
                                {
                                        var key:String = source[i].label;
                                        //对字符串长度进行检索,并且分析,对每一个字符组合都存放起来
                                        for(var j:int = 1; j <= key.length; j++)
                                        {
                                                var str:String = key.substring(0,j);
                                                //从存放有相同标题的集合中取出来
                                                var strAry:ArrayCollection = searchMap[str] as ArrayCollection;
                                                if(strAry == null)
                                                {
                                                        strAry = new ArrayCollection();
                                                        searchMap[str] = strAry;
                                                }
                                                //存放完整的对象
                                                strAry.addItem(source[i]);
                                        }
                                }
                        }

然后下面是用户输入信息有变化时的相应函数

                       //输入文本内容变化事件
                        private function inputChangeEvent():void
                        {
                                //每次输入文字变化,都检索一下,查看数据是否变化
                                if(currMsg != searchText.text && currMsg != "")
                                {
                                        currMsg = searchText.text;
                                        //显示是否有相关的搜索相关信息,如果没有就显示默认信息
                                        var strAry:ArrayCollection = searchMap[currMsg] as ArrayCollection;
                                        if(strAry == null)
                                        {
                                                strAry = defaultData;
                                        }
                                        //显示出与搜索相关的信息
                                        searchMsgList.visible = true;
                                        searchMsgList.dataProvider = strAry;
                                }
                        }

最后总结一下,如果少量数据的话,应该都没什么区别。但是,如果有大量数据时,区别就来了。
第一方法比较简单,消耗的内存比较少,但是因为是即时分析数据源,所以搜索出来可能会稍微慢点。
第二种的话,因为实现已经分析好了,可以根据用户输入的内容马上从哈希表里取出对应数据。所以取数据反应会非常快。但是占用内存可能会多点(因为要根据每个字符串组合进行存放,不过其实也是增加多一些字符串,对象只是引用而已)。
同时还做一些细的优化,例如限制长度等等,至于怎么用,根据爱好了。如果数据量大的话,个人偏向第二种。这里的两种算法其实跟具体的CS3或者flex组件不相关的,只是用list来显示而已。
分享到:
评论

相关推荐

    动态查找类似谷歌搜索引擎

    【标题】"动态查找类似谷歌搜索引擎"涉及到的核心技术是HTML和JavaScript,这两种技术在Web开发中扮演着重要的角色。HTML(HyperText Markup Language)用于构建网页的结构,而JavaScript则负责网页的交互性和动态...

    ASP+AJAX做类似google的搜索提示

    这个主题“ASP+AJAX做类似google的搜索提示”聚焦于如何利用这两种技术来实现这一功能。 ASP(Active Server Pages)是微软开发的一种服务器端脚本环境,用于创建动态交互式网页。它允许开发者使用脚本语言(如...

    Qt 控件 实现 QComboBox输入自动提示功能(仿Google搜索提示)

    而实现QComboBox输入自动提示功能,可以极大地提升用户体验,类似于Google搜索框的自动完成效果。这个功能在开发过程中常用于减少用户的输入负担,提高数据选择的效率。本篇将详细介绍如何在C++中使用Qt库来实现这一...

    TextBox和ComoBox智能提示功能源代码(类似Google首页的搜索框)

    在本项目中,"TextBox和ComboBox智能提示功能源代码"是实现了一个类似于Google首页搜索框的智能提示效果。 TextBox通常是单行文本输入框,用户可以在此输入文本。在实现智能提示时,当用户在TextBox中输入字符时,...

    ajax+json仿照google提示

    在IT行业中,Ajax(异步JavaScript和XML)与JSON(JavaScript Object Notation)的结合是构建现代Web应用程序的关键技术之一,尤其是对于实现类似Google搜索提示的功能。本文将深入探讨这两个技术以及如何利用它们来...

    Google搜索从入门到精通v4.0

    - 通过Google的图像搜索功能,用户可以直接上传图片或输入图片URL来查找类似图像或包含该图片的网页。 #### 目录检索 - Google也支持通过特定命令检索网站目录,这对于查找特定类型的资源非常有帮助。 #### 新闻...

    Jquery自动提示插件(类似Google与Baidu)

    其中,jQuery的自动提示插件为用户提供了一种类似于Google和百度搜索的智能提示功能,能够实时显示与用户输入匹配的建议内容,从而提高输入效率和准确性。 **jQuery Autocomplete 插件** jQuery Autocomplete是...

    ajax Suggest类似google的搜索提示效果

    Ajax Suggest是一个功能强大的JavaScript框架,它允许开发者创建类似Google搜索提示的效果,即在用户输入关键词时,自动显示与输入匹配的相关建议。这种实时的交互性增强了用户体验,减少了用户寻找和输入完整信息的...

    suggest 仿google提示

    标题中的“suggest 仿google提示”指的是创建一个类似于Google搜索框自动补全的功能。这个功能在用户输入查询词时,会根据已有的数据提供相关的建议,以提高搜索效率和用户体验。这种技术通常被称为自动完成功能或者...

    仿百度、Google搜索效果 AutoComplete

    仿百度、Google搜索效果的AutoComplete旨在提供与这两家知名搜索引擎类似的用户体验,即当用户在搜索框输入内容时,系统会实时分析并推荐相关的搜索建议,以下拉列表的形式呈现,帮助用户快速找到目标信息。...

    googleAuthenticator windows版

    双因素认证(2FA)是一种安全措施,它要求用户提供两种不同的身份验证方式来证明自己的身份。在典型的2FA流程中,用户首先输入用户名和密码,然后通过手机应用、短信验证码、硬件令牌或生物识别等第二种验证方式完成...

    几行代码的二级联动和类似goolge的输入下拉提示

    而"类似Google的输入下拉提示"则是指搜索引擎或输入框在用户输入时,根据输入内容动态展示相关建议,这种功能在很多网站和应用中都有广泛的应用,能够快速引导用户找到他们可能想要搜索的内容。 DWR(Direct Web ...

    asp_搜索引擎介绍

    在ASP中实现站内搜索有两种方式:一是直接引用知名搜索引擎提供的站内搜索代码,如上述的Google、百度和雅虎的站内搜索代码;二是自行设计站内搜索程序。引用知名站点的站内搜索代码相对简单,只需将提供的代码插入...

    安卓popupwindow相关-类似google的侧滑效果以及仿微信的dropdown菜单.rar

    SlidingPaneLayout允许你创建一个可以从屏幕边缘滑出的面板,而DrawerLayout则专为导航抽屉设计,支持左滑和右滑两种模式。在提供的代码中,开发者可能已经实现了类似的功能,你可以通过阅读源码来理解其工作原理。 ...

    ASP+AJAX输入框提示效果

    "ASP+AJAX输入框提示效果"是将这两种技术结合,为用户提供类似Google搜索那样的实时输入提示功能。在用户输入查询词时,服务器会根据输入的内容即时返回相关的建议,这些建议通常以下拉列表的形式显示在输入框下方,...

    js两种打开新的页面

    在JavaScript中,打开新的页面主要有两种方法:`window.open()`函数和`location.assign()`或`location.replace()`。这两种方法在应用场景和效果上有所不同,下面将详细介绍它们的工作原理、使用方式以及适用场景。 ...

    JavaScript+css+div实现的网页气球提示

    CSS 文件可能命名为 `balloon.css` 或类似名称,包含所有与气球提示相关的样式规则。`images` 目录可能包含用于装饰气球提示的图像,如背景图片、箭头图标等。 总的来说,"JavaScript+css+div实现的网页气球提示"是...

    陈灯可重用代码段管理器VS插件版4.0

    1、实现了类似Google的智能搜索框,能够根据关键词提示并自动完成搜索词的输入,使得搜索更加方便、准确。 2、增加了对重复入库代码的过滤功能。 3、代码段搜索界面中增加了“最近入库”和“最近使用”选项卡,使...

    IOS应用源码Demo-类似苹果内置谷歌地图的翻页效果-毕设学习.zip

    2. Objective-C/Swift:这两种语言是iOS开发的主要语言,Swift是较新的语言,语法更现代,而Objective-C是遗留的但仍然广泛使用的语言。 3. UIKit框架:这是iOS开发的核心,包含了创建用户界面、处理用户交互和管理...

    Qt 控件 实现 QComboBox输入自动提示功能(仿Google搜索提示)-C++代码类资源

    这样,用户在输入时就能看到匹配的建议项,提供类似Google搜索的体验。 总结来说,这个资源提供了一种实现QComboBox自动提示功能的方法,通过自定义QComboBox子类,监听文本变化,过滤数据并实时更新显示。这种技术...

Global site tag (gtag.js) - Google Analytics