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
厲害了
厲害了給力!謝謝分享!
給力!謝謝分享!文章不錯非常喜歡
文章不錯非常喜歡查号吧号碼庫的搜索已經用其他方式取代百度的站内搜索了。
查号吧号碼庫的搜索已經用其他方式取代百度的站内搜索了。