`

模糊搜索条件工具类实现

阅读更多
  • 备份存档

  • 需求:

    1. 设计公共工具类组合搜索条件语句;
    2. 关键字以空格分隔;
    3. 多个空格将视为一个空格;
  • 思路:

    1. 传入两个参数,一个为输入值,一个为匹配字段;
    2. 利用正则将输入值处理为将要匹配的数组;
    3. 对匹配字段进行语句组合;
  • 实现:(注:该方法是在ofbiz框架中实现,如果是ssh或别的框架中,使用jdbc,实现原理相同)

       
        public static EntityCondition getFuzzyMatchingFromInput(String input, String field) {
            String result = StringUtil.changeSpecialForSearch(input).trim();
            String[] strs = result.split("[\\s]+");
            List<EntityCondition> conditionList = FastList.newInstance();
            if (strs.length == 0) {
                conditionList.add(EntityCondition.makeCondition(field, EntityOperator.LIKE, "%\\" + input + "%"));
            } else {
                for (int i = 0; i < strs.length; i++) {
    
                    conditionList.add(EntityCondition.makeCondition(field, EntityOperator.LIKE, "%"
                                    + strs[i].replace("%", "\\%") + "%"));
                }
            }
            return EntityCondition.makeCondition(conditionList, EntityOperator.OR);
        }
     
  • 注意点:

    1. 注意处理输入值的连续空格,如果只使用[\\s]来分隔,则可能会搜索出全部记录;
    2. changeSpecialForSearch 是另一个工具类方法,会将输入值中所有特殊字符转换但并不包含%
    3. 由于%没有被处理,则要再次对输入值进行%处理
0
0
分享到:
评论

相关推荐

    es7.15.2版本全部封装工具类

    在Java开发中,工具类是常见的代码组织形式,它们封装了特定功能,便于代码复用和维护。这里我们关注的是一个名为...在实际应用中,只需导入该工具类,就可以轻松地进行数据管理,从而将更多精力放在业务需求的实现上。

    提供汉字、拼音、拼音首字母的模糊查询(匹配左侧)

    本文将深入探讨如何实现一个基于JavaFX的模糊查询系统,该系统支持汉字、拼音以及拼音首字母的左侧匹配。这个功能对于提高用户在大量中文数据中查找信息的效率至关重要。 首先,我们需要了解JavaFX这一强大的Java...

    struts+hibernate 整合实现模糊搜索

    4. **模糊搜索实现**: 模糊搜索通常涉及SQL的LIKE操作或全文搜索引擎。在Hibernate中,你可以使用HQL(Hibernate Query Language)或Criteria API来构造模糊查询。例如,使用`%`通配符进行模糊匹配。 5. **Action与...

    MFC文件搜索程序

    通过设置不同的搜索条件,如文件名、大小、日期等,我们可以实现对文件的精确或模糊搜索。 **3. 模糊搜索** 模糊搜索通常涉及到字符串匹配算法,如Levenshtein距离、Jaccard相似度或者正则表达式。在MFC中,可以...

    Lucene全文搜索 分组,精确查找,模糊查找

    《Lucene全文搜索:分组、精确查找与模糊查找详解》 在IT行业中,全文搜索引擎的使用越来越广泛,而Apache Lucene作为一款强大的开源全文检索库,深受开发者们的喜爱。它提供了高效的索引和查询功能,使得在海量...

    小工具类 搜索框 (源码).zip

    "小工具类 搜索框 (源码).zip"是一个包含源代码的压缩包,专为实现搜索功能而设计。它可能是为了帮助开发者理解如何构建自定义的搜索组件或者提供一个可直接使用的代码模板。在本文中,我们将深入探讨搜索框的设计...

    C#根据条件查找硬盘指定文件

    最后,使用者可以根据自己的需求对系统进行适当的修改,例如添加更多的搜索条件,优化搜索算法,或者改进用户界面。这种可扩展性和灵活性是软件设计的基本原则之一。 总的来说,实现“C#根据条件查找硬盘指定文件”...

    文件搜索自制工具.zip

    接着,实现文件搜索功能可能涉及到字符串处理,例如使用`std::string`和正则表达式库(`&lt;regex&gt;`)来解析和匹配搜索条件。对于复杂的搜索需求,如按日期或大小排序,可能需要对文件系统API有深入理解,使用系统调用来...

    在ios中实现模糊搜索功能

    本项目提供了一种使用NSPredicate类实现的模糊搜索解决方案,相比传统的for循环遍历方式,NSPredicate在处理大数据量时具有更好的性能表现。 NSPredicate是Objective-C中的一个强大工具,它是用于在集合对象中进行...

    小烦内存搜索工具

    其次,工具通常具备高级搜索选项,允许用户设置搜索条件,如大小写敏感性、十六进制或十进制表示、正则表达式等,以提高搜索的精确度。此外,一些版本可能还支持模糊搜索,允许用户查找近似值或范围内的值,这对于...

    C++控制台学生信息管理系统(带模糊搜索功能)

    在本项目中,我们讨论的是一个使用C++编程语言实现的控制台学生信息管理系统,它具备基本的学生数据管理功能,并且具有模糊搜索功能。这样的系统对于教学、小型机构或者个人学习C++编程以及数据管理非常有帮助。接...

    基于模糊积分融合方法的智能元搜索引擎系统

    实验结果表明,该元搜索引擎在相同条件下具有更好的搜索效果,特别是在处理复杂查询时的优势更为明显。 #### 结论 综上所述,基于模糊积分融合方法的智能元搜索引擎系统通过引入智能搜索代理的设计框架、优化搜索...

    搜索本地文件工具

    本地文件搜索工具通常采用先进的索引技术和模糊匹配算法,能够在短时间内扫描整个硬盘,甚至包括网络共享文件,以实现快速的文件检索。这些工具通常具有实时更新索引的能力,确保新添加或修改的文件能被立即搜索到。...

    c#写的类似windows文件查询搜索

    开发者可能使用`Directory`和`FileInfo`类来遍历文件和目录,获取文件属性,并实现文件搜索功能。 3. **文件查询和过滤**:为了实现搜索功能,开发者可能编写了逻辑来处理用户的输入,使用正则表达式或者基于字符串...

    【idea全局搜索】intellij idea 怎么全局搜索

    通过高级搜索选项,你可以细化搜索条件,例如: - **文件类型**:只搜索特定类型的文件,如.java、.xml等。 - **文件路径**:限制搜索范围在特定的目录或子目录下。 - **符号匹配**:查找特定类型的符号,如类、...

    搜索工具

    在IT行业中,搜索技术涉及到多个层面,包括但不限于关键词匹配、全文索引、模糊搜索、智能推荐等。一个优秀的搜索工具通常会结合这些技术,以提供精确、快速的搜索结果。 在提供的压缩包子文件中,我们可以看到以下...

    combobox 下拉多选框带搜索功能

    4. 数据过滤和列表更新,根据搜索条件实时更新显示的选项。 5. 可能使用了某种状态管理机制来跟踪选中状态和搜索状态。 6. 良好的封装性和API设计,以便于其他开发者集成和自定义。 这个压缩包文件中的...

    仿电商应用中搜索模块的实现【GreenDao数据库存储数据】

    在搜索模块的实现上,我们需要创建一个对应的实体类,比如`Product`,代表电商应用中的商品。这个实体类将包含商品的各种属性,如名称、价格、描述等。然后,利用GreenDao的`Generator`工具,自动生成对应的Dao类,...

    桌面搜索工具 桌面文件高级搜索

    "桌面文件高级搜索"则意味着该工具不仅提供基本的按文件名搜索功能,还包含一系列进阶选项,如搜索内容、按文件类型、日期、大小等条件进行筛选。例如,用户可以输入关键词搜索文档中包含的特定文字,或者设定时间...

    C++ 特征码搜索支持问号搜索 开源

    在C++中实现特征码搜索,通常涉及到对二进制数据的处理,包括读取文件或内存映像,解析二进制格式,以及使用循环、条件语句等进行匹配检查。为了支持问号通配符,你需要创建一个匹配算法,当遇到问号时,算法会接受...

Global site tag (gtag.js) - Google Analytics