`
dreamstone
  • 浏览: 289042 次
  • 来自: ...
文章分类
社区版块
存档分类

模糊查询的思考

 
阅读更多

现实中经常有这样的问题,我们要从很多东西里边找到一个东西,而这些东西有很多别名,例如地点。如

何实现模糊查找呢?

说到查找就要考虑这样的问题,效率,模糊查找。说到效率hash表肯定是一种很好的解决方案。
但是如何实现模糊查找呢?一种最简单的方法是这样。利用hashmap提高效率
方法一:
构造一棵树,每个节点包含一个map,每个map中放着的是很多个节点
因为别名是汉字,我们使用汉字的unicode(唯一)作为key,value就是包含这个字的节点。比如
中国人->A
中华人民共和国->B
构造这样一个树 ,rootMap(key=中 value=node1)-->

                              |-(key=国 value=node2)-->node2包含map2(key=人 value=A) 
node1包含map1-- |
                              |-(key=华 value=node3)-->node3包含map3(key=人 value=node4)-->node4


包含map4(key=民 value=node5)-->node5包含map5以此类推,这样就建立了一个树型结构

输入“中”,直接把属于中的一支拿出来
输入“中华”把属于中华的一支拿出来。
但是事实证明这个方案是个不好的办法,因为存在以下问题。
1,当别名达到50000多个的时候占用内存100m也就是说,空间消耗大
2,当第一个字不准确的时候,模糊查询失效
虽然有改进方法,但是改进空间不大

方法二:
方法二来源于选举的思想,所以用人来代替地名更合适,比如说有10个人,每个人都有很多的名字,
姓名,字,乳名,曾用名等等

虽然别名是多的,但是真是地点确是比较少的,建立一个10长度的数组,把这些人编号,
你输入一些字例如“舒庆春舍于”,来投票,我把你输入的字一个一个去查找,
先查找别名包含“舒”的所有人,每人投一票,
再查找别名包含“庆”的所有人,每人投一票,
再查找别名包含“春”的所有人,每人投一票,
依此类推,最后我在10个人中找出票数最多的人

这个的优点:
模糊查询更有效,占用内存更少,减少交互(用户可以多输入一些相关信息),一定能查到结果(相对是)
注:为什么要减少交互呢,因为有些情况下交互越少越好(例如短信,因为收费和录入麻烦的原因)
缺点:
1,因为操作多,查询多,效率低下
2,当实际的“人”变的非常多的时候,出现空间不足。

但是这个方法的可优化性很强,因为人们取名字是有规律的,用到的字可能很多,常用字却很少,
所以我们可以把一些常用字对应的人先查出来,在查询的时候直接使用这些结果。这样缺点1就能得到优化
对于缺点2,我们可以实现这样的方法,默认不建立任何数组,建立一个空map,当这个人被第一次投票的时候他进入map,这样,那些被投0票的人就不会进入,大大减少了空间浪费,但是如果被投票的人很多呢可以模仿内存的实现方式,实现部分存到硬盘,采取换入换出的方式,因为每个人都得到平均票数的机会很少,大部分时候是某些人得到大多数的票,所以换入换出应该不是很频繁,问题二也得到了一定程度的解决。

 

分享到:
评论

相关推荐

    基于VB程序和SQL Server数据库的多条件模糊查询的实现 (1).pdf

    在数据库应用开发中,多条件模糊查询是一项关键技术,它允许用户根据不完全或不确定的信息对数据库进行查询,...在实际应用中,多条件模糊查询的设计和实现是一个需要细致思考与测试的过程,以确保系统的可用性和效率。

    用“问题”助推数据库原理SQL语言的模糊查询 (1).pdf

    总结:本文通过“问题式”教学法介绍和探讨了数据库原理中的SQL语言模糊查询,强调了在教学中如何使用问题来引导学生理解和应用模糊查询,从而提高他们的学习效果和技能。这种方式不仅增强了学生对理论知识的理解,...

    模糊数学原理

    在信息检索中,模糊查询能够处理用户输入的不精确关键词,提高检索效果。 在《模糊数学——原理及应用》这本书中,可能会详细讨论模糊集合理论、模糊逻辑系统、模糊关系、模糊推理、模糊决策方法等内容,并提供实际...

    实验04_单表查询1

    10. **部分匹配的字符串查询**:图4-10中,可能使用LIKE操作符进行模糊匹配,如`WHERE 姓氏 LIKE '李%'`。 11. **聚合函数**:图4-11中,COUNT函数计算男客户人数,显示为“男客户人数”。 12. **多条件查询**:图...

    Oracle 10g 数据库管理 应用开发 标准教程 思考与练习.docx

    * 在 Oracle 数据库中,可以使用关键字 LIKE 和通配符"_"或百分号"%"进行模糊查询。 本资源涵盖了 Oracle 数据库管理和应用开发的多个方面,包括物理存储结构、逻辑存储结构、实例系统、服务器模式、SQL 语言等。...

    语义网的模糊本体研究

    文章在全面回顾和分析后,还可能提出一些有关模糊本体未来研究方向的思考,以及对当前模糊本体研究状况的总结性观点。通过比较和分析现有的研究,我们可以更好地理解模糊本体的发展趋势和挑战。例如,在比较不同的...

    毕业论文安卓506公交线路查询系统app.doc

    系统需能够根据用户输入的目的地或起点,快速准确地提供公交线路信息,同时支持模糊查询,以便用户在不确定具体站点名称时也能找到相关线路。 四、可行性分析 考虑到Android设备的广泛普及和系统开放性,开发这样...

    数据库技术发展的思考PowerPoint演示文稿.ppt

    数据库技术发展的思考中,引出了一个关键问题——如何有效地应对Web带来的海量数据和应用需求。Web不仅带来了数据源的多样化,还提出了高效数据管理和应用开发的挑战。Google的成功在一定程度上揭示了搜索引擎在处理...

    windows资源管理器教案

    【知识点详解】 1. **资源管理器的定义与重要性** 资源管理器是Windows操作系统中的... - 设置思考题和练习,巩固学习成果。 通过以上内容,学生应能掌握资源管理器的基本使用,从而在日常电脑操作中更加得心应手。

    企业档案信息化建设的实践与思考.docx

    【企业档案信息化建设的实践与思考】 随着我国信息化时代的快速发展,企业档案管理也面临着转型与升级的挑战。企业档案信息化建设已经成为提升企业管理效能的关键环节,旨在实现档案管理的数字化、网络化,以适应日...

    HQL语言大全 跳楼分值

    =)、逻辑运算符(AND、OR、NOT)、模糊查询(LIKE)、区间查询(BETWEEN)以及IN和NOT IN等。 ### 5. 动态查询 通过使用Criteria API或Querydsl等工具,可以构建更灵活的动态HQL查询,根据传入的参数来决定查询的...

    thinkPHP查询方式小结

    - **NOTLIKE**:非模糊查询 例如: ```php $data['id'] = array('gt', 6); $data['name'] = array('like', '%as%'); $m->where($data)->select(); ``` 3. **区间查询**: 可以使用数组来表示区间的开始和...

    数据库上机实验.pdf

    实验的思考题探讨了关系别名的使用情况,别名可以简化书写、用于子查询和区分同一关系在不同查询中的应用。这在复杂的SQL语句中尤其有用,可以使查询更清晰易读。 在上机实验五中,目标进一步提升到掌握SELECT语句...

    数据库系统概论实验指导书.doc

    实验二侧重于SQL查询技巧,包括插入数据、更新数据、删除数据,以及使用SELECT语句进行条件查询、范围查询、模糊查询和排序。实验还要求学生掌握SQL中的统计函数,如SUM、AVG、MIN、MAX和COUNT,并使用GROUP BY进行...

    数据库实验报告.pdf

    2. **简单查询**:包括投影(SELECT语句)、选择(WHERE子句)、排序(ORDER BY子句)、模糊匹配(LIKE关键字)等,掌握基础的查询技巧。 3. **连接查询**:涉及等值连接、自然连接、一般连接、自身连接和外连接,...

    地质大数据应用与地质信息化发展的思考.pdf

    数据挖掘关注的是从海量、模糊、随机的数据集中提取有效信息的过程,它通过使用数据分析和发现算法来识别有用的数据,提炼隐藏在其中的信息和知识,从而发现数据关系和预测未来。而基于大数据的可视化与智能化则是...

    第一次上机实验报告1

    最后,关于子查询的思考题强调了别名的重要性。别名可以简化复杂的查询,提高可读性,同时在多次扫描同一表时,可以避免重复的表名,使得代码更加清晰。如最后一段提到的,子查询可以被当作一个临时的表(在本例中为...

    在线考试系统-C语言课程设计报告--198886055.doc

    - 模糊查询与综合查询:提供多种查询方式,以满足不同查询需求。 - 统计与分析:对考试数据进行统计分析,为教学改进提供依据。 3. **设计与实现**: - 数据结构应用:利用已学的链表(学生信息)和数组(试题库...

Global site tag (gtag.js) - Google Analytics