实现可自定义的搜索功能

原创 2004年09月15日 16:44:00
有一次我的项目中,要从用户指定的目录搜索指定的内容。可能是目录也可能是文件。而且用户要搜索的名称可能有特定的格式。并且能对所有子目录进行搜索。
 
对于特定格式的搜索,我们可以用正则表达式来做。例如,所有的*.ini为扩展名的文件名,其正则表达式为
    .+//.ini$

 
而对子目录的穷极搜索,可以使用在基本计算机课程就学过的递归函数。后面的程序中可以看到如何写。
 
为此设计了一个简单的搜索框架。搜索功能和搜索结果的处理是分开处理的。这也是为了达到最高的灵活性。其结构如下:
<pre>
    +==========Class===============+                       
    +      FileSearcher            +                     +==========Interface=======+ 
    +==============================+                     +  FileSearcherListener    +
    + +search()                    + <>================o +==========================+ 
    + +registerSearcherListener()  +                     + +found(File file)        +
    + +unregisterSearcherListener()+                     +==========================+
    +==============================+

</pre>
通过上面的类结构图我们看到,完成搜索功能的是FileSearcher类,它提供search()方法来进行搜索。而 FileSearcherListener负责处理搜索到的项目。你可以通过实现FileSearcherListener接口来定制自己的搜索结果处理方式。并通过FileSearcher类的registerSearcherListener方法来注册你自己定义的处理处理类。这样的结构,很好的解决了搜索过程与搜索结果处理的强藕和问题。
这样我就可以很方便的定制我要搜索的内容并处理。来看看下面的示例:
<pre>
            /* 定义一个listener,来对进行处理,这个例子只是简单的在控制台打出文件名。*/
            FileSearcherListener listener = new FileSearcherListener()
            {
                int count=1;
                public void found(File file)
                {
                    System.out.println("Found "+count+":"+file);
                    count++;
                }
            };
            /* 构造FileSearcher类,指定搜索起始目录为c:/WINNT, 搜索类型为FILE, 匹配格式是所有*.ini文件。*/
            FileSearcher search = new FileSearcher("c:/WINNT",FileSearcher.FILE,".+//.ini$");
            search.registerSearcherListener(listener);
            search.search();

</pre>

全文请看:http://www.JavaGarden.org

 

 

 

可输入的下拉列表(带搜索功能)

Editable listbox/* Common elements */body{font:small/1.2em arial,helvetica,clean,sans-serif;font:x-s...
  • kaibinsj
  • kaibinsj
  • 2005年01月29日 09:33
  • 5383

Android自定义搜索效果的实现

在Adnroid中关于搜索提供了AutoCompleteTextView 、SearchView等控件,AutoCompleteTextView 很好用且简单。SearchView后来又提供了兼容包 ...
  • CodeNoodles
  • CodeNoodles
  • 2016年05月15日 20:27
  • 4302

iOS搜索功能的几种实现方式

iOS搜索功能的几种实现方式,包含自定义视图时需要的部分参数设置
  • Micheal_ZJ
  • Micheal_ZJ
  • 2016年09月08日 15:16
  • 6243

自定义搜索功能

自定义搜索功能
  • GXSeveryday
  • GXSeveryday
  • 2016年05月09日 14:00
  • 917

angularjs 下拉搜索框

前两天研究了一下angularjs,不得不说angularjs的mvc思想还是很强大的。对应偏重于数据处理的项目还是非常有优势的。 写了个搜索下拉框的demo,注释在里边都写了,就不再这罗嗦了。 ...
  • qzshiyongjie123
  • qzshiyongjie123
  • 2016年08月09日 14:14
  • 3997

iOS搜索框的实现

iOS搜索框的实现引子:搜索框是我们在实际开发中比较常用到的控件之一,可以说几乎每一个应用程式中都会使用到搜索框,例如QQ、微信等都用到了搜索框iOS中的搜索框实现起来相对简单一点,实现方法大致有iO...
  • qq_34101611
  • qq_34101611
  • 2016年04月07日 23:59
  • 5756

Android 添加一个搜索功能

从android3.0以后,使用SearchView组件,可以在app bar添加一个搜索功能,你可以定义SearchView什么时候显示,什么时候不显示。添加SearchView在App Bar上首...
  • qq_28057541
  • qq_28057541
  • 2016年07月29日 21:39
  • 862

使用haystack实现django全文检索搜索引擎功能

前言 django是python语言的一个web框架,功能强大。配合一些插件可为web网站很方便地添加搜索功能。 搜索引擎使用whoosh,是一个纯python实现的全文搜索引擎,小巧简单。 中...
  • huohuotu
  • huohuotu
  • 2017年08月27日 12:25
  • 453

使用textField实现搜索功能

作为一个编程小白,这个功能纠结了我几天,边完成公司交给我的任务边想如何实现搜索的思路,终于,要放假了,也就想出来了 还有以后在开发过程中如果没有其他特殊的要求,真的不需要用textField...
  • Mz_jiujiuguiyi
  • Mz_jiujiuguiyi
  • 2016年12月09日 11:40
  • 1783

IOS-搜索功能实现, UIsearchController的使用

开发中,搜索功能使用的频率自然不言而喻, 本文主要讲一些常用的 1.先创建一个搜索框(比较简单的一个搜索框, 系统自带的) - (void)viewDidLoad {     [supe...
  • lllqqqqqqqqq
  • lllqqqqqqqqq
  • 2015年02月09日 15:47
  • 15122
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实现可自定义的搜索功能
举报原因:
原因补充:

(最多只允许输入30个字)