QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 4984|回复: 20

请教一个基于web的数据库应用的具体实施方法

[复制链接]
发表于 2006-7-15 21:26:47 | 显示全部楼层 |阅读模式
不是计算机专业的,数据库是这两个月来的业余爱好,不敢说有什么数据结构的功底,但有一个初步的想法所以希望兄弟们能多多指导。
工作中涉及一些国家标准和行业标准的查询,单位收集的标准以pdf的格式放在一台windows文件服务器上,虽然说是分文件夹存放的,但打开目录后漫山遍野的长长的文件名总是让我感觉要找个东西实在是很痛苦的事情,尤其是windows自带的查找功能不强(或是我还未掌握技巧)。想起读书时候用的清华同方知网的数据库平台(大学基本都是这个数据库吧),很想将之借用一下。据我所知的可怜的数据库知识,在一个数据库中添加全文索引并不难,初步想做一个web应用,后台用数据库将标准组织起来便于查询,引入全文索引。
大体的思路是这样的:能够精确和模糊查询关键字就行,至于词频统计和相关度查询等高级功能可以暂时不考虑。将文件信息建表存储在数据库中。由于标准中都是相互引用的,所以希望web页中最好有像verycd电骡下载页面里的复选框,在查询后可以选择具体的文件,然后点击一个“拷贝选中文件”按钮就将选中的文件拷贝到指定的本机目录中。
为了能够让习惯在一堆文件中查找标准的人继续用原来的方式,原服务器必须保留,新建的数据库中可以建一个表将文件的实际物理位置标识出来(文件指针),在web页面中用户就可以不关心文件的具体位置(像清华同方的一样)。
打算用linux+php+mysql+apache构建整个系统(没有时间和精力学java了),不清楚难度到底有多大,尤其是上面说的两点(拷贝所有文件和建立文件指针)还有一些地方没有想透,希望热心的兄弟能够指点一下,或者提提意见,不胜感谢!




在sir里发过,似乎没有什么答案。点击一个按钮选择所有文件的这个功能我在一本书上看见了,不过是用JavaScript实现的。但我不知道怎么实现批量拷贝,请大家帮忙。
发表于 2006-7-15 21:53:09 | 显示全部楼层
从网页上批量拷贝很困难,因为网页文件借助浏览器进行本机读写文件是严重的安全风险,你必须借助 javascript 来完成,并且还要保证浏览器的安全设置允许读写客户端的磁盘。

记住一点:浏览器端的运行和服务器端没关系,服务器发送需要的数据、代码完全成后,浏览器才会开始执行,这个时候服务器端的网页代码可以认为已经停止了运行。
服务器端的执行代码和浏览器端无关。服务器那里的代码经过运算后会成为普通的 html 文件传送给浏览器解释。

全凭网页下载文件,需要同时打开多个下载地址,普通的 html 代码没有这个功能(只能下一个)。多个文件的话下载是个问题。

我建议你不要用 web 代码编写程序,使用 C 等本地运行的程序吧。
实在不行就用 C 写本地代码,之后借助 http 获得服务器端搜索的结果。

完全借助 php 可以认为是不可能的。
回复

使用道具 举报

发表于 2006-7-16 00:14:56 | 显示全部楼层
verycd没有把简单的问题往复杂的方向作

如果LZ想研究搜索引擎可以看看nutch

https://ako.3322.org/tracroot/trac-Nutch

Jackey抽空在定制开发
回复

使用道具 举报

 楼主| 发表于 2006-7-16 16:10:18 | 显示全部楼层
谢谢两位版主的热心!
之前从未从安全角度考虑过实现,经jiangtao提醒才想起php是运行在服务器端的,javascript是运行在客户端的。
兔子版主的批评很对,verycd的确是和客户端程序结合的,似乎e2k是个协议什么的。nutch相关东西我到sf上看了些,感觉是很有意思,但是凭自己目前的水平要用于实际,还有一定困难。况且据说对中文的支持还是个问题。
其实我的专业并不是软件,纯粹是从自己的需要出发来考虑实现,所以当初选择了门槛较低的脚本语言来编写,希望缩短开发的时间,尽量用B/S方式实现,这样就能在自己的linux上写,以后迁移平台的时候比较方便(单位里是清一色的win)。
还想问一些问题:
1.如果还是想做web的话,用javascript和php配合实现是否能实现我描述的所有功能?
2.如果用C或者JAVA来写应用程序的话,是否意味着文件服务器可以不作任何改动而改由应用程序来直接对后台数据库进行管理?(现文件夹已经按小部门设置权限)
3.如果考虑到以后会对弄出来的东西进行升级,不限于对pdf的搜索,比如加入帐户控制,文件登入登出管理,批准流程控制,逐渐做成PDM系统的雏形是否C/S模式要比B/S模式好的多?
回复

使用道具 举报

发表于 2006-7-16 17:57:05 | 显示全部楼层
这个用C/S架构比较好,借助socket通讯

至于web应用,你看金山词霸在线查词(PHP开发)的表现就很一般了

LZ可以尝试PyGTK

https://ako.3322.org/tracroot/trac-MyLinuxFans

我们工作之余作的小应用实例
回复

使用道具 举报

发表于 2006-7-16 18:47:06 | 显示全部楼层
权限管理要放到服务器端,这样子的话,似乎只能用 C/S 了吧?
如果你用 Socket 通讯,那么服务器端和客户端所使用的语言就可以分开,我比较倾向于客户端 C ,服务器用 py 一类的语言,最好是解释型的语言,方便随时进行修改。
回复

使用道具 举报

 楼主| 发表于 2006-7-17 23:00:14 | 显示全部楼层
又看了一遍兔版主说的nutch,这次不是在sf上看的了,兔版主的意思是让我把各种标准都弄成wiki的形式,到时候有什么不懂的就在wiki里查?
还有一事不很明白:C是依赖平台的,如果要用C写客户端的话是不是要用VC?另外,如果采用pyGTK的话,py有与数据库的接口,直接用客户端访问后台数据库也是可行方案,这样做是否难以修改呢?jiangtao版主的意思是不是只用C写一个界面(只含请求返回时格式化的函数),通过服务器上指定的Socket连接后调用服务器端的脚本查询,返回的结果在客户端格式化显示?
还是很想试着写写这个应用,学习python也是一个长期的计划,但是看到hello world的时候部门就开始加班了,业余时间目前只够睡觉和看半小时论坛。我是不是该建议同事们都去下载google桌面搜索?呵呵...
回复

使用道具 举报

发表于 2006-7-18 09:26:46 | 显示全部楼层
google桌面搜索有Linux下的么?
回复

使用道具 举报

发表于 2006-7-18 09:33:03 | 显示全部楼层
直接用客户端访问后台数据库不是好方法,就像你意识到的可能会因为修改数据库结构引起更新的麻烦

还是用C/S架构,Server端通过DB API访问数据库,Client端通过socket向Server端发送请求,获得格式化的数据

C是跨平台的,依赖平台的都是GUI造成的,所以PyGTK可以减少GUI兼容性的麻烦

看看MyLinuxFans项目https://ako.3322.org/tracroot/trac-MyLinuxFans
回复

使用道具 举报

发表于 2006-7-18 18:24:09 | 显示全部楼层
用标准的 C 做核心模块,用跨平台的代码编写,平台间的专用 C 代码尽量做到和功能无关,仅仅用来针对用户进行 IO 。

不然就用 java 。
回复

使用道具 举报

 楼主| 发表于 2006-7-19 23:35:33 | 显示全部楼层
据我所知linux下没有google搜索,我个人觉得用locate也基本够应付了。C除了GUI上各平台不同,关键还在于库也是不同的,若只用ANSI标准库来写跨平台就不会有问题,只是可能没有GUI界面,代码写起来不是很方便,估计还要去找一个TC2.0集成环境来当编译器(这东西好久没用了,不知绝迹了没有),
在斑竹们的启发下,我大致分析了主要的问题点:既然按照设想的应用单靠服务器端的代码不足以实现,那么就要在客户端想一个办法把搜索的结果传递过来。目前的思路是服务器端还是采用php+mysql,可以在网页上直接输出一个已经格式化的搜索结果,比如返回文件的实际物理位置并将之格式化,然后写一个最简单的客户端,批量拷贝到本机指定的目录。可以用java,或者先弄一个文字界面的C的客户端,要求用户输入拷贝路径,实在不济就直接输出一个DOS的批处理文件,再到本机运行(估计现在没人这么干了)......以后有时间了以后再升级成图形界面的,反正到时服务器的文件组织肯定会改变。升级的时候再考虑用兔版主说的pyGTW。
这样问题点就剩下怎么把现有的pdf加上全文索引,结合网上查找的结果思考再三,也只能先用工具将之转成text文本再导入数据库,此功能可暂时缓缓,大家也多提意见。解决上面说的批量拷贝问题就可以先对别的类型的文件进行管理了。
再次多谢两位版主的关心。
回复

使用道具 举报

发表于 2006-7-20 19:35:24 | 显示全部楼层
突然想道一种办法:

不管哪个系统,一律用 FF 。之后针对他写插件。
回复

使用道具 举报

发表于 2006-7-21 16:03:06 | 显示全部楼层
XUL
回复

使用道具 举报

发表于 2006-7-23 02:35:32 | 显示全部楼层
不知道我的理解有没有问题,这个东西大体要解决两个问题,一是检索,二是多文件下载。
检索依赖于具体数据库的创建。楼主所说的的先转成text再导入的话是一个方法,不过可能有其它的解决方法,google可以做到,我们应该也可以:)
多文件一口气下载的话倒简单,生成一个zip压缩包,然后比如这样
header("Location: $zipfileurl");
然后写一个脚本放到crontab里,对在临时目录里创建时间大于10分钟前的zip文件删除。

呵呵,个人想法,见笑了。
回复

使用道具 举报

发表于 2006-7-23 03:04:38 | 显示全部楼层
     要怎样的服务器才可以办到?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-4-24 03:31 , Processed in 0.141590 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表