MediaWiki和Drupal都自带了站内搜索功能,我们多年都是直接调用,只在少数情况下尝试其它的,例如✉邮编库网站因为数据量过大,Wiki站的搜索常导致MySQL数据库卡住,后来改用了Sphinx才不再卡住,但搜索结果不尽如意,有一些莫名其妙的不相干结果,估计是没有把Sphinx摸透、没有专门加对中文的分词包吧。
Drupal站也尝试安装过Apache Solr Search,感觉太复杂了,勉强用了一下,没有深入研究。Drupal站还用Views来进行过搜索、安装过Auto Complete,以及直接用SQL语句来进行搜索。
另外,Google Custom Search(带AdSense广告)以及Google Ajax Search也曾经用过,百度尝试过百度联盟里面的搜索广告但没有用过专门的百度站内搜索,最近因为一些网站的数据量实在过大,考虑用上百度的站内搜索功能,发现竟然不支持https调用,再看相关新闻公告,主要集中在2014年、2015年,到2016以后只有一篇文章了,看来百度最近几年都没有升级和关注过这个功能了。
在网上找了一些资料,有网友自己动手设法来解决https调用的问题,我们同事经过一番摸索也基本搞出来了,我又尝试了一些,记录如下,主要是用Apache的代理模式来解决,Apache的httpd.conf中需要开启这些模块:
LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_connect_module modules/mod_proxy_connect.so
再在extra/httpd-ssl.conf里面设置代理的域名:
<VirtualHost _default_:443> ServerName www.example.com ServerAdmin webmaster@example.com DocumentRoot "/alidata/www/example.com" <FilesMatch "\.(cgi|shtml|phtml|php)$"> SSLOptions +StdEnvVars </FilesMatch> <Directory "/alidata/www/example.com"> AllowOverride All SSLOptions +StdEnvVars </Directory> #ProxyPreserveHost On ProxyRequests Off ProxyPass /api http://zhannei.baidu.com/api ProxyPassReverse /api http://zhannei.baidu.com/api ProxyPass /cse http://zhannei.baidu.com/cse ProxyPassReverse /cse http://zhannei.baidu.com/cse ProxyPass /customer_search http://znsv.baidu.com/customer_search ProxyPassReverse /customer_search http://znsv.baidu.com/customer_search </VirtualHost>
保存后重启Apache,就可以用https://www.example.com/api 来代理http://zhannei.baidu.com/api 了,其它还要代理几个其它目录:cse, customer_search等。
在/alidata/www/example.com目录下建static/api放置需要的一些文件,还有一些细节以后补充,先把采用了百度站内搜索的https网站例子给出:
上面两个例子的顶部都有搜索框,输入关键词后搜索就是给出的百度站内搜索结果,amp和mip版本顶部的搜索框也都可以用,搜索结果都是用的我们自己做反向代理的域名,支持https。
搜索框的代码示例:
<form target="_top" name="f" action="/cse/search"> <input name="q" id="kw" placeholder="搜索关键词" type="text" class="search_form"> <input name="entry" value="1" type="hidden"> <input name="s" value="354632965240861xxxx" type="hidden"> <input type="submit" id="su" value="搜索" class="search_form"> </form>
不过还有一些细节没有解决,例如:
- 嵌入的百度联盟广告因为不是https的内容,所以不显示
- 搜索结果中如果有图片(例如网站Logo),在PC版也是不显示的
- 手机搜索结果中,顶部无法嵌入自己的标识、内容、链接等
- 搜索结果页管理中,Logo无法输入成功,总是报错,网上搜索其他人也遇到
希望百度以后还是能把这个站内搜索做得更完善一些,便于别人使用。
评论4
厉害了
厉害了给力!谢谢分享!
给力!谢谢分享!文章不错非常喜欢
文章不错非常喜欢查号吧号码库的搜索已经用其他方式取代百度的站内搜索了。
查号吧号码库的搜索已经用其他方式取代百度的站内搜索了。