有段时间没写东西了,最近也就做过这么个东东,就随便写写吧 ^^
phpdig是个好东东,他可以像google一样搜索网上的资源。从最基本的页面,到txt, word, excel, pdf,只要在系统中安装了一些特定软件后也都能搜了。普通页面就不介绍了,我做的是搜索日文PDF文档,所以就介绍一下PDF的搜索吧。^^
phpdig的网站: www.phpdig.net
下载页面: http://www.phpdig.net/navigation.php?action=download
我下的是v.1.8.7,下完安装好了直接到phpdig/admin/index.php页面,用户名和密码默认都是admin,左边的框里打要抓取的地址,下面选深度和每页抓取几个连接。注意这里的Links per 如果为0的话就是抓取这个页面上所有连接。然后就"Dig this!",接下来就能看到结果了。这个步骤只是spider去抓取页面数据存入到数据库里而已,要真正的搜索要去phpdig/search.php这个页面搜。这里还有一点要注意的,就是在搜索的过程中程序没运行完之前就关掉页面的话会导致下次搜索这个页面时出问题,所以不要在页面执行完之前关闭页面。不必担心页面最大执行时间的问题,这个页面的开头部分把执行时间设成一整天了。如果实在是不小心中途就关闭了,也还是有办法补救的。在phpdig/admin/index.php页面,右边的框里选中前面的那个地址,如中途关闭的话,该地址前应该会有"Locked"标记。现在选中这个地址,然后在点击下面的"Stop spider",然后等他stop完成就ok了。
到这里普通的页面都可以搜了,但是诸如word,pdf这些文档都是加过密的,所以直接用spider去抓是抓不到里面的内容的,这里我用到了pdftotext。看字面就能看出来这个东东是把pdf转成了text,以使spider能够抓取PDF文档的内容。
关于这个pdftotext,是xpdf中的一个部分,可以选择下载编译包然后自己编译,也可以选择下载编译好的二进制文件然后上传pdftotext。我选择的后者,没办法,前者编译过程出问题了,而我对linux又不太熟,所以。。。xpdf的源码包和已编译包在这里都能下到:http://www.foolabs.com/xpdf/download.html
下完二进制文件后上传到任何目录,当然你自己得记住。然后用编辑器打开includes/config.php,修改以下代码:
define('PHPDIG_INDEX_PDF',false);
define('PHPDIG_PARSE_PDF','/usr/local/bin/pstotext');
define('PHPDIG_OPTION_PDF','-cork');
改为
define('PHPDIG_INDEX_PDF',true);
define('PHPDIG_PARSE_PDF','你上传的目录/pstotext');
define('PHPDIG_OPTION_PDF','');要注意的是目录要绝对路径,下面的PHPDIG_OPTION_PDF如果只是搜英文PDF文档可以让他空着,如果搜日文的就得加上了,比如:
define('PHPDIG_INDEX_PDF',true);
define('PHPDIG_PARSE_PDF','你上传的目录/pstotext');
define('PHPDIG_OPTION_PDF','-enc UTF-8');
用这个参数的前提是PDF文档的编码要和参数一致,否则是读不了PDF文档的。如果要一些其他的日文编码,比如Shift-JIS, Shift-EUC,那可能要编译安装pdftotext才行,我是用的二进制文件,所以只能用UTF-8,UTF-8估计是pdftotext默认支持的,恰好我要搜索的日文PDF文档的编码也是UTF-8,所以就方便多了。在这里要说一句,编码问题害死人啊,我已经在编码上吃了不少亏了。
还有一点就是v1.8.7是不支持双字节的文档的,比如汉字,日文,韩文都是不支持的。这个也是他的spider在存数据库时的原理造成的。简单的说就是spider是根据文档中的空格来分隔插入数据库的。而双字节的空格和英文中的空格当然是不同的,所以。。。
针对这个问题,我把spider作了些修改,不让他分隔插入,而是把整篇文档的内容都插入同一条记录,效果还不错,虽然改的我自己都有点糊涂了。据说v1.8.8支持双字节文档了,但是一看安装对系统的要求,算了,还是自己改v1.8.7了 = =
其他文档比如word就和这个很类似了,就是把pdftotext换成了catdoc,虽然我也不晓得这个是什么东东^^
由于该系统是在1个多月前做的,一些细节问题都记不太清楚了,希望对各位有所帮助^^