大数据量的文件和数据比对算法

wasuka 2007-06-01 02:32:12
有一文件,每行的格式相同,都为:“用户ID,学校名称”。例如:
27,北师大
6559,复旦
大约46万行;

数据表包含学校ID、学校名称字段。例如:
1 北京师范大学
2 复旦大学
大约2000行;

文件中的学校名称可能是简写,表中为全称;
现要找出文件内的学校名称不存在于表中的行,要考虑到简写和文字顺序情况。例如:“北师大”匹配“北京师范大学”,但不匹配“师范大学北区”。


  我目前的做法是:先将表内的学校名称数据全部读出存成字符串$school,其中每个学校名称之间用"|"分隔;然后分批读取文件(例如每次200行),explode(",",$str)后再将学校名称部分$str[1]与$school做正则比对。
  考虑到中文简称问题,$str[1]中的每一个汉字间又要插入".*",还要考虑到学校名称的间隔符"|"……
  测试效率非常低,200行的文件数据用时大概1分钟。

  求一个高效率的算法,谢谢。
...全文
768 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
ImN1 2007-06-01
  • 打赏
  • 举报
回复
这个例子会对你有所启发

http://community.csdn.net/Expert/TopicView3.asp?id=5421276
wasuka 2007-06-01
  • 打赏
  • 举报
回复
对。就是说“北师大”这三个字之间可以有别的字,但顺序必须保持一致
adenr 2007-06-01
  • 打赏
  • 举报
回复
你把文件中的 北师大作为条件查询阿 %北%师%大%,结果会出现北京师范大学,而不是师范大学北区吧

21,893

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧