QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 3217|回复: 18

我用Google桌面搜索和apache结合,作了个企业搜索服

[复制链接]
发表于 2006-2-12 16:24:33 | 显示全部楼层 |阅读模式
希望对大家有所帮助。
http://www.cublog.cn/u/13472/?u=http://www.cublog.cn/u/13472/showart.php?id=73880[url][/url]
发表于 2006-2-13 09:54:50 | 显示全部楼层
用 rinetd 这个小东西映射一下端口就可以了吧。
http://www.boutell.com/rinetd/
回复

使用道具 举报

发表于 2006-2-13 10:01:58 | 显示全部楼层
还有,如果用 Apache 做 Proxy ,不想输入 http://192.168.1.120/&s=DwtuMY_ukcXYFD5klmozXmgxBhA 这么麻烦的 url 的话,可以用 rewrite 把对 http://192.168.1.120/ 的访问重写到 http://192.168.1.120/&s=DwtuMY_ukcXYFD5klmozXmgxBhA 就可以了哈。
回复

使用道具 举报

 楼主| 发表于 2006-2-13 18:11:52 | 显示全部楼层
[quote:ba909996cb="Bluedata"]还有,如果用 Apache 做 Proxy ,不想输入 http://192.168.1.120/&s=DwtuMY_ukcXYFD5klmozXmgxBhA 这么麻烦的 url 的话,可以用 rewrite 把对 http://192.168.1.120/ 的访问重写到 http://192.168.1.120/&s=DwtuMY_ukcXYFD5klmozXmgxBhA 就可以了哈。[/quote]

谢谢了!

好象这样是不行的。主要是因为google desktop的每一次检索都以http://127.0.1:4664/........的方式进行查询调用。前面已经进行了端口映射,如果再重写,就会被服务器google搜索引擎解释成http://127.0.01:4664/&s=DwtuMY_ukcXYFD5klmozXmgxBhA /....造成查询错误。

另外,昨天的Blog有一个大Bug,今天已经修正了。
我觉得,对于真正使用windows的小网管们,我的这个服务器建设还是很有帮助的。希望得到大力广播。
回复

使用道具 举报

发表于 2006-2-14 10:36:29 | 显示全部楼层
我自己也测试了一下,用 rinetd 做端口映射果真不行呢。而且 rewrite 的方式也不可以,看来真要动手实验才能找到好的解决办法呢。
回复

使用道具 举报

发表于 2006-2-14 13:07:48 | 显示全部楼层
http://www.projectcomputing.com/resources/desktopProxy/
回复

使用道具 举报

 楼主| 发表于 2006-2-14 13:29:18 | 显示全部楼层
[quote:87194e0078="Bluedata"]http://www.projectcomputing.com/resources/desktopProxy/[/quote]

E文不好,没能明白它的意思。dnka倒是在google论坛上见过,居然要注册码。
我这个服务器所用的软件就只是windows操作系统要花钱,其余都是免费软件。而且效果也很好。希望广为传播。
回复

使用道具 举报

发表于 2006-2-15 17:54:15 | 显示全部楼层
desktopProxy 是一个 java 的小程序,代替 Apache 这样的庞然大物。
回复

使用道具 举报

发表于 2006-2-15 17:54:59 | 显示全部楼层
dnka 是最方便的实现,功能不错,而且并不需要注册啊。
http://dnka.com/downloads.html
回复

使用道具 举报

发表于 2006-2-15 17:57:17 | 显示全部楼层
如果用 apache 作 proxy ,还有些可以改进的地方,参看这篇:
Here is a simple to access the search tool from another machine.

To be able to send a query and get back the results, you simply need to configure Apache as a reverse proxy (see below).

Google search runs as a web server.
It acts as a web server to return the search results, but it DOES NOT serve the local files. From the Google search screen on your browser, when you click on a file link, a request is sent to the local web server (port 4664) but nothing is returned. The google search program spawns a new process to display the file, lauching Word, Powerpoint, etc.

To be able to click on the results and view them (they are local files, remember), you need to have a way to serve the files from the local machine to the remote machine. There are many solutions for this: mount the local filesystem remotely, have Apache server those files, etc.

Here is my setting:
- google search running on host1 where the files are
- apache running on host1 as a reverse proxy
- apache running on host2 where the host1 file system is mounted
- client accessing the google search service through host1:80

In the Apache config, you need to:
- enable the various proxy modules
- enable mod_rewrite
- tell apache to reverse proxy request to localhost on port 4664
- tell apache to rewrite google search redir requests (prefixed by /redir?url= in the link) to a web server that can display the document.

Note that local documents are using Windows path separator. The path needs to be rewritten. To do that, I am using a simple Perl script that rewrite the path and returns an HTTP Location redirect.

Apache config:

ProxyPass / http://127.0.0.1:4664/


<Location /redir>
RewriteEngine On
RewriteRule url=([^&]+) http://another-web-server/cgi-bin/show_file.cgi?$1 [R,L,NE]
</Location>


The show_file script is given below:

use URI::Escape;
my $file = uri_unescape($ENV{QUERY_STRING});
$file =~ s/\\/\//g; # to replace \ by /
$file =~ s/\+/ /g; # to replace + by space

print "Location: http://another-web-server/$file\n\n";


One last thing. When accessing google search, you need to pass some special parameters in the initial query: e.g. &s=.

And it works. The only thing that does not work is the access to "cached results". This require to rewrite the HTML page returned by google search. This can be done using mod_proxy_html (see this article for more info).

From: http://www.oreillynet.com/pub/a/network/2004/10/14/google_desktop.html
回复

使用道具 举报

 楼主| 发表于 2006-2-15 21:12:40 | 显示全部楼层
[quote:c915140b2e="Bluedata"]dnka 是最方便的实现,功能不错,而且并不需要注册啊。
http://dnka.com/downloads.html[/quote]

试了一下dnka,在有apache时,的确不错,可以使用http://192.168.1.120就打开的搜索主页面。停止apache后客户端不能打开搜索桌面。那份许可协议也的确没什么限制力。
但是,好象客户端还是得使用端口映射才可行(我的GDS是最新的beta版本)。

另外问一下Bluedata兄,那修正后的apache配置文件能够实现客户端打开搜索到的文件吗?如果还是不能,不如就简单的全部屏蔽更容易理解。
回复

使用道具 举报

发表于 2006-2-15 21:31:41 | 显示全部楼层
有了 dnka 就不用再装 apache 了,把 dnka 监听的端口改为 80 就可以了。

关于用 apache 作 proxy:在用 rewrite 转变"/redir?url="后,是直接显示文件内容了。而不是调用应用程序再打开文件。
回复

使用道具 举报

 楼主| 发表于 2006-2-15 21:52:16 | 显示全部楼层
[quote:ad8b206c86="Bluedata"]有了 dnka 就不用再装 apache 了,把 dnka 监听的端口改为 80 就可以了。

关于用 apache 作 proxy:在用 rewrite 转变"/redir?url="后,是直接显示文件内容了。而不是调用应用程序再打开文件。[/quote]

使用dnka后监听80端口后服务器本地查询的确很好了,但客户端还是不能打开搜索主页面。已经添加了允许192.168.1.*的主机访问权限了。服务器本机的两个IP192.169.1.100和120都可以。可能是我的GDS版本过高的原因吧。

又,直接显示文件内容,这样不好吧?有些文件可能是客户端没有文件关联的,岂不是会有一大堆乱码。最好是能够实现由本地程序打开。
另外,那个another-web-server是在客户端还是服务器上?在服务器上岂不是还要虚拟一个?
回复

使用道具 举报

 楼主| 发表于 2006-2-15 22:10:45 | 显示全部楼层
如果用apache代理,怎样实现客户端不要端口映射呢?
回复

使用道具 举报

 楼主| 发表于 2006-2-15 22:22:22 | 显示全部楼层
我用翻译软件简单看了看dnka的功能,第一句:
* Simple to search data on remote desktop.
应该是
* 简单的搜寻在遥远的桌上型电脑上的数据。
是个意思吗?如果是这样,那么,dnka并不是支持客户端搜寻的插件,而是搜寻客户端的插件。那就没有多大的必要,GDS本来就可以手动添加客户端。
回复

使用道具 举报

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

本版积分规则

GMT+8, 2024-11-2 22:39 , Processed in 0.057159 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

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