分享

第一次原创:使用Google桌面搜索打造企业搜索服务器

 战神之家 2015-01-16
                            版权所有: i770880,分发:GPL2
前言:
    应该有许多人和我一样吧:在一个小企业里打工,学的不是计算机,但是得兼职当一个小网管。公司里的文件杂乱的存放在一台计算机里,员工们总是抱怨不知道在哪儿去寻找他们需要的公共文件。这时,多么迫切需要一个能满足基本搜索的软件呀。
    Google出来了,强大的搜索功能和速度让我心动。但是,查找用于企业的搜索服务器Google Mini居然要3000美元,老板是一个子都不会出的呀,反正员工最后不都能找到他们的文件么!这时候,把希望寄托在了免费的Google桌面搜索上了。
    Google桌面搜索版本2出来后,显露一线生机,它居然可以搜索局域网内的共享文件夹里的文件。这样,每一台计算机都安装上它,全部添加公共文件服务器到搜索索引里面,每一台计算机都能够索引文件服务器了。
    一个显著的缺点是每一计算机的索引都不一致,且都向服务器索引造成网服务器负担较大,并且没一台计算机的索引文件都越来越大,先前的老式机子无法为继。这时候,还是迫切需要一个搜索服务器。
    Google桌面搜索版本3放出测试版了,一个振奋的功能是可以将索引放在Google的服务器上,这样通过使用指定的帐户就能够实现无处不在的搜索了。如此强大的功能,加上Google的信誉,还是让我怦然心动的。
    但是,一个显著的矛盾出来了:为了保密,公司是阻止员工上网的。索引在Google那里,是不能被员工检索到的。一切又回到了起点,还是需要一个企业搜索服务器。
    穷则思变,既然索引可以放在Google服务器上,为什么就不可以放在自己的服务器上呢;Google启用的是web方式访问,只要能实现基于IP地址的访问,就能够把它集成到web服务器上去。
    于是,我抱着试一试的心情,在chniaunix的linux服务器论坛发出提问,希望得到很好的建议:
    http://bbs./viewthread.php?tid=699210&extra=page%3D1
并终于得到实现。

引用注明出处:
http://www./u/13472/?u=http://www./u/13472/showart.php?id=73880

正文(其实很简单):
一、需求:
    服务器:windowsxp以上操作系统、Google桌面搜索版本2以上、apachewindows版本2.0以上for windows版本
    局域网内工作站:端口映射器、浏览器
二、服务器上的安装:
    1、安装Google桌面搜索,并添加索引文件服务器;
       启用Google桌面搜索,记录类似http://127.0.0.1:4664/&s=DwtuMY_ukcXYFD5klmozXmgxBhA
的桌面搜索主页网址。
    2、在服务器网卡上启用同网段第二IP地址,如:192.168.1.120
    3、安装apache服务器,修改httpd.conf配置文件:
#启用代理
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#启用代理

#启用虚拟主机 
NameVirtualHost 192.168.1.120:80
<VirtualHost 192.168.1.120:80>

#启用Google桌面搜索代理
ProxyPass //  http://127.0.0.1:4664/
<Proxy http://127.0.0.1:4664/>
    Allow from all
</Proxy>

<Location /redir>
   Deny from all
</Location>
#启用Google桌面搜索代理

    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot /
    ServerName search.example.com
RewriteEngine on
    ErrorLog logs/dummy-host.example.com-error_log
   CustomLog logs/dummy-host.example.com-access_log common
</VirtualHost>
#启用虚拟主机

    4、重新起动apache后,服务器正式开始工作了。这时,只要你的Google桌面搜索已经起动,就可以将刚才记录的搜索主页面网址中的127.0.0.1:4664更换成192.168.1.120就能够实现本地搜索了。即,搜索服务器的查询web网址已经可以用
 http://192.168.1.120/&s=DwtuMY_ukcXYFD5klmozXmgxBhA
代替了。这是一个标准的基于IP的访问,可以向局域网中的浏览器开放的。现在,可以将该网址添加为书签,向局域网内提供了。

三、客户端的设置:
    1、在浏览器上添加刚才制作的书签,以方便访问服务器,此时,还只能访问搜索引擎的主页面。
    2、安装 端口映射器 软件,目的是实现端口映射。如果客户端操作系统本身可提供端口映射,可以不安装这类软件。
    3、端口映射:将客户端的127.0.0.1:4664映射到服务器的192.168.1.120:80上,只要映射成功,就大功告成了。

    最后,试一试你的企业搜索服务器吧,在客户端访问刚才添加的书签,输入你期望查询的关键字,选择搜索桌面,看看,是不是就是服务器上已经由Google桌面搜索引擎给你建好的索引。
    目前我的索引已经超过10万条了。Google Mini也仅提供10万条的索引功能。
   
    祝大家新年快乐,狗年旺运。
  
后记:
    上面的设置有一点问题。见我的这个帖子:
 http://bbs./viewthread.php?tid=699808&page=1&extra=page%3D1#pid4735819
帖子摘要:
  如同点击公网Google索引一样,点击搜索出来的索引,由于Google desktop能够列出本地文件,点击这些文件时,就自动起动本地程序进行打开处理。
如果用户在服务器上操作,这的确很方便,但是,对于局域网的其他工作站,由于已经把端口映射到了服务器上,这时的点击,被视为服务器本机的点击,自然也从服务器上起动程序。这样,终端用户不知觉的点击造成服务器不断打开众多文件,直至负荷过大而崩溃。

现在,急迫需要解决的是禁止从apache里面起动本地程序,让这些点击都成为空点击。

我看了一下,Google Desktop的本地程序请求使用的语句都是:
http://127.0.0.1:4664/redir?url=...........
由于前端主机已经被映射到了apache上了,只要能过滤掉redir?url这个关键字也应该是可行的。


   最后,得益于chniaunix的kenduest兄指点,简单解决了。
即:在httpd.conf中加入下面这段配置:
 
<VirtualHost ....>

<Location /redir>
   Deny from all
</Location>

</VirtualHost>


非常感谢
kenduest兄!

再记:
  后来试了一下dnka,的确不错,许可也没有限制力。用它建立局域网搜索服务器更简单些。




    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多