本文目錄一覽:
- 1、php面試:什麼是垂直搜索,斯芬克斯中分詞原理?
- 2、搜索引擎採用的是什麼技術?
- 3、垂直搜索引擎在電子商務中的應用
- 4、請教一下java和php協同開發的方法
- 5、開源搜索的20款開源搜索引擎系統
php面試:什麼是垂直搜索,斯芬克斯中分詞原理?
垂直搜索引擎是應用於某一個行業、專業的搜索引擎,是搜索引擎的延伸和應用細分化。垂直搜索引擎為用戶提供的並不是上百甚至上千萬相關網頁,而是範圍極為縮小、極具針對性的具體信息。因此,特定行業的用戶更加青睞垂直搜索引擎,是垂直搜索引擎的長期、穩定的群體。
搜索引擎採用的是什麼技術?
隨着互聯網的迅猛發展、WEB信息的增加,用戶要在信息海洋里查找自己所需的信息,就象大海撈針一樣,搜索引擎技術恰好解決了這一難題。搜索引擎是指互聯網上專門提供檢索服務的一類網站,這些站點的服務器通過網絡搜索軟件或網絡登錄等方式,將Intenet上大量網站的頁面信息收集到本地,經過加工處理建立信息數據庫和索引數據庫,從而對用戶提出的各種檢索作出響應,提供用戶所需的信息或相關指針。用戶的檢索途徑主要包括自由詞全文檢索、關鍵詞檢索、分類檢索及其他特殊信息的檢索。下面以網絡搜索機械人為例來說明搜索引擎技術。
搜索引擎優化,通俗理解是:通過總結搜索引擎的排名規律,對網站進行合理優化,使你的網站在百度和Google的排名提高,讓搜索引擎給你帶來客戶。深刻理解是:通過SEO這樣一套基於搜索引擎的營銷思路,為網站提供生態式的自我營銷解決方案,讓網站在行業內佔據領先地位,從而獲得品牌收益。同時打響品牌,讓更多人明白其產品。
網絡機械人(Robot)又被稱作Spider、Worm或Random,核心目的是為獲取Internet上的信息。一般定義為「一個在網絡上檢索文件且自動跟蹤該文件的超文本結構並循環檢索被參照的所有文件的軟件」。機械人利用主頁中的超文本鏈接遍歷WWW,通過URL引用從一個HTML文檔爬行到另一個HTML文檔。網上機械人收集到的信息可有多種用途,如建立索引、HIML文件合法性的驗證、URL鏈接點驗證與確認、監控與獲取更新信息、站點鏡像等。
機械人安在網上爬行,因此需要建立一個URL列表來記錄訪問的軌跡。它使用超文本,指向其他文檔的URL是隱藏在文檔中,需要從中分析提取URL,機械人一般都用於生成索引數據庫。所有WWW的搜索程序都有如下的工作步驟:
機械人從起始URL列表中取出URL並從網上讀取其指向的內容;
從每一個文檔中提取某些信息(如關鍵字)並放入索引數據庫中;
從文檔中提取指向其他文檔的URL,並加入到URL列表中;
重複上述3個步驟,直到再沒有新的URL出現或超出了某些限制(時間或磁盤空間);
給索引數據庫加上檢索接口,向網上用戶發佈或提供給用戶檢索。
搜索算法一般有深度優先和廣度優先兩種基本的搜索策略。機械人以URL列表存取的方式決定搜索策略:先進先出,則形成廣度優先搜索,當起始列表包含有大量的WWW服務器地址時,廣度優先搜索將產生一個很好的初始結果,但很難深入到服務器中去;先進後出,則形成深度優先搜索,這樣能產生較好的文檔分佈,更容易發現文檔的結構,即找到最大數目的交叉引用。也可以採用遍歷搜索的方法,就是直接將32位的IP地址變化,逐個搜索整個Internet。
量販式搜索引擎優化是一個技術含量很高的網絡應用系統。它包括網絡技術、數據庫技術動標引技術、檢索技術、自動分類技術,機器學習等人工智能技術。
垂直搜索引擎在電子商務中的應用
PANZER網站架構解決方案
我公司是領先的網站架構解決方案提供商,由互聯網行業的一群知名的年輕人共同發起和創辦,坐落於廣州的天河科技園區,是由原來成立於2004年的磐志搜索引擎工作室發展壯大而成,我們執着於網站技術、網絡蜘蛛和搜索引擎技術的研究開發和應用。
公司發起人團隊有着豐富的網站開發、運營經驗,曾經成功策劃、開發和運營過被上市公司收購的大型網站平台和全國知名的電子商務網站。今天我們把我寶貴的經驗分享給創業的站長們,致力於成為站長的事業貼心夥伴!
一個成功網站的發展過程中每一個階段都涉及到技術的未知領域和新的問題,技術的未知和摸索造成了網站發展大量資源、時間、精力的投入甚至折返,很多好的商業模式在技術嘗試的過程中坐失先機。
我們的宗旨是:領先的網站架構解決方案提供商。
我們擁有知識結構全面、專業、實施經驗豐富的網站技術工程師、網站運營工程師、網絡蜘蛛和搜索引擎技術工程師隊伍。在C\C++、Python、JAVA?、PHP、AJAX等技術領域有國內領先的開發經驗和實施能力。
PANZER解決方案包括:
★系統開發:
電子商務網站 PANZER電子商務引擎(PHP+Ajax+C)
門戶資訊網站 PANZER門戶資訊引擎(PHP+Ajax+C)
博客社區網站 PANZER博客社區引擎(PHP+Ajax+C)
垂直搜索引擎 PANZER蜘蛛+PANZER搜索
★定製開發:
網絡爬蟲(磐志蜘蛛) 主題定製+網絡爬行+文件管理+監控(C/C++)
搜索引擎(磐志搜索) 索引、分詞、檢索、排序(C/C++)
★網絡架構:
代理加速 Linux+ Squid
負載均衡 服務器集群( Cluster )Server負載平衡
雙機熱備 ***
★系統優化:
數據庫優化 索引、存儲過程設計、全文檢索
PHP代碼優化 安全性、效率、結構優化(時間0.05秒)
AJAX優化 壓縮、安全性、互動性、可移植.
請教一下java和php協同開發的方法
引用
因為在做垂直搜索工作中,使用的是java編寫的一個搜索類庫。做垂直搜索,很多實用要使用到配置。當搜索的信息量大時,網站的更新。搜索程序的配置維護是一個不可忽視的問題。所以用了php做網頁,提供配置界面,這樣就可以不用直接修改配置文件或是配置數據庫表。當把配置信息配置好了,我們需要檢測配置是否正確,因為使用的是java程序,所以檢測配置的正確與否使用的也是java程序來檢測。這裡就存在一個問題,就是需要把php頁面上的信息傳入到java程序中去檢測。這個時候就需要php和java通信了。下面我就來介紹下怎麼使php跟java通信(當然,你也可以使用類似webservice等技術)也就是php中調用java程序。 php要調用java程序:需要以下準備,php程序,java程序,還有就是shell程序或是bat程序。下面分別介紹下在linux服務器下php調用java程序和在windows服務器下調用java程序。前提是php,apache,jdk的環境都已經配置好。
一 在linux下php調用java程序是通過shell文件。分別是以下三個文件: test_shell.php test_shell.java test_shell.sh 他們的源代碼如下:
1.test_shell.java程序代碼
public class test_shell {
public static void main(String[] args) {
System.out.println(“你輸入的參數是:”+args[0]+”t”+args[1]);
}
}
2.test_shell.php程序代碼
?php
/*
* 該函數是用來執行shell命令的,其實還可以使用:exec(),system(),
* popen()和pclose(),passthru() 函數。最長用的是前面兩個和例中使
* 用的shell_exec()。
*/
$args1=”我喜歡你”;
$args2=”我很愛你”;
// 注意空格
$r=shell_exec(“./test_shell.sh $args1 $args2”);
echo $r;
?
3.test_shell.sh程序代碼是
#!/bin/sh
JAVA_HOME=/usr/local/jdk
CLASSPATH=.:/usr/local/jdk/jre/lib/rt.jar:/usr/local/apache/htdocs/test_shell/test_shell.class
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME CLASSPATH PATH
cd /usr/local/apache/htdocs/test_shell
java test_shell
#shell代碼結束
以下是三個程序的存放路徑和運行次序。
1.三個文件都必須在同一目錄下,比如在/usr/local/apache/htdocs/test_shell/下,不然php很難調到java程序。
2.把test_shell.java程序編譯成test_shell.class,然後把test_shell.class文件存放到CLASSPATH中。如果系統配置了那些環境變量,這裡在配置一次是沒有壞處的,也不會影響配置好的系統環境變量。這裡設置的好處是當沒有配置jdk環境配置,只有jre時,則需把jre放到/usr/local/jdk下就以。
二、下面先介紹在windows服務器下,php調用java程序是通過bat文件來的。分別是以下三個文件: test_bat.php test_bat.java test_bat.sh 他們的源代碼如下:
1.java程序
public class test_bat {
public static void main(String[] args) {
System.out.println(“你輸入的參數是:”+args[0]+”t”+args[1]);
}
}
2.test_bat.php程序代碼
?php
/*
* 該函數是用來執行shell命令的,其實還可以使用:exec(),system(),
* popen()和pclose(),passthru() 函數。最長用的是前面兩個和例中使
* 用的shell_exec()。
*/
$args1=”我喜歡你”;
$args2=”我很愛你”;
// 注意空格
$r=shell_exec(“./test_shell.sh $args1 $args2”);
echo $r;
?
3.test_bat.sh程序代碼是
@echo off
set path=%path%;%cd%jrebin
set CLASSPATH=.;%cd%jrelibrt.jar;%cd%test_bat.class
java test_bat %1 %2
#bat代碼結束
1.三個文件都必須放在同一目錄下,比如在/usr/local/apache/htdocs/test_bat/下,不然php很難調到java程序。
2.把test_bat.java程序編譯成test_bat.class,然後把test_bat.class文件存放到CLASSPATH中。如果系統配置了那些環境變量,這裡在配置是沒有壞處的,也不會影響配置好的系統環境變量。這裡設置的好處是當沒有配置jdk環境配置,只有jre時,則需把jre放到跟跟test_bat.java同一目錄下就行了。
三、上面兩個例子中,test_shell.sh用的絕對路徑,test_bat.bat是用的相對路徑。不管是絕對還是相對,只要路徑對了就行了。
開源搜索的20款開源搜索引擎系統
一些開源搜索引擎系統介紹,包含開源Web搜索引擎和開源桌面搜索引擎。
Sphider
Sphider是一個輕量級,採用PHP開發的web spider和搜索引擎,使用mysql來存儲數據。可以利用它來為自己的網站添加搜索功能。Sphider非常小,易於安裝和修改,已經有數千網站在使用它。
RiSearch PHP
RiSearch PHP是一個高效,功能強大的搜索引擎,特別適用於中小型網站。RiSearch PHP非常快,它能夠在不到1秒鐘內搜索5000-10000個頁面。RiSearch是一個索引搜索引擎,這就意味着它先將你的網站做索引並建立一個數據庫來存儲你網站所有頁面的關鍵詞以便快速搜索。Risearch是全文搜索引擎腳本,它把所有的關鍵詞都編成一個文檔索引除了配置文件裏面的定義排除的關鍵詞。 RiSearch使用經典的反向索引算法(與大型的搜索引擎相同),這就是為什麼它會比其它搜索引擎快的原因。
PhpDig
PhpDig是一個採用PHP開發的Web爬蟲和搜索引擎。通過對動態和靜態頁面進行索引建立一個詞彙表。當搜索查詢時,它將按一定的排序規則顯示包含關鍵字的搜索結果頁面。PhpDig包含一個模板系統並能夠索引PDF,Word,Excel,和PowerPoint文檔。PHPdig適用於專業化更強、層次更深的個性化搜索引擎,利用它打造針對某一領域的垂直搜索引擎是最好的選擇。
OpenWebSpider
OpenWebSpider是一個開源多線程Web Spider(robot:機械人,crawler:爬蟲)和包含許多有趣功能的搜索引擎。
Egothor
Egothor是一個用Java編寫的開源而高效的全文本搜索引擎。藉助Java的跨平台特性,Egothor能應用於任何環境的應用,既可配置為單獨的搜索引擎,又能用於你的應用作為全文檢索之用。
Nutch
Nutch 是一個開源Java 實現的搜索引擎。它提供了我們運行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬蟲。
Lucene
Apache Lucene是一個基於Java全文搜索引擎,利用它可以輕易地為Java軟件加入全文搜尋功能。Lucene的最主要工作是替文件的每一個字作索引,索引讓搜尋的效率比傳統的逐字比較大大提高,Lucen提供一組解讀,過濾,分析文件,編排和使用索引的API,它的強大之處除了高效和簡單外,是最重要的是使使用者可以隨時應自己需要自訂其功能。
Oxyus
是一個純java寫的web搜索引擎。
BDDBot
BDDBot是一個簡單的易於理解和使用的搜索引擎。它目前在一個文本文件(urls.txt)列出的URL中爬行,將結果保存在一個數據庫中。它也支持一個簡單的Web服務器,這個服務器接受來自瀏覽器的查詢並返迴響應結果。它可以方便地集成到你的Web站點中。
Zilverline
Zilverline是一個搜索引擎,它通過web方式搜索本地硬盤或intranet上的內容。Zilverline可以從PDF, Word, Excel, Powerpoint, RTF, txt, java, CHM,zip, rar等文檔中抓取它們的內容來建立摘要和索引。從本地硬盤或intranet中查找到的結果可重新再進行檢索。Zilverline支持多種語言其中包括中文。
XQEngine
XQEngine用於XML文檔的全文本搜索引擎。利用XQuery做為它的前端查詢語言。它能夠讓你查詢XML文檔集合通過使用關鍵字的邏輯組合。有點類似於Google與其它搜索引擎搜索HTML文檔一樣。XQEngine只是一個用Java開發的很緊湊的可嵌入的組件。
MG4J
MG4J可以讓你為大量的文檔集合構建一個被壓縮的全文本索引,通過使內插編碼(interpolative coding)技術。
JXTA Search
JXTA Search是一個分佈式的搜索系統。設計用在點對點的網絡與網站上。
YaCy
YaCy基於p2p的分佈式Web搜索引擎。同時也是一個Http緩存代理服務器。這個項目是構建基於p2p Web索引網絡的一個新方法。它可以搜索你自己的或全局的索引,也可以Crawl自己的網頁或啟動分佈式Crawling等。
Red-Piranha
Red-Piranha是一個開源搜索系統,它能夠真正」學習」你所要查找的是什麼。Red-Piranha可作為你桌面系統(Windows,Linux與Mac)的個人搜索引擎,或企業內部網搜索引擎,或為你的網站提供搜索功能,或作為一個P2P搜索引擎,或與wiki結合作為一個知識/文檔管理解決方案,或搜索你要的RSS聚合信息,或搜索你公司的系統(包括SAP,Oracle或其它任何Database/Data source),或用於管理PDF,Word和其它文檔,或作為一個提供搜索信息的WebService或為你的應用程序(Web,Swing,SWT,Flash,Mozilla-XUL,PHP, Perl或c#/.Net)提供搜索後台等等。
LIUS
LIUS是一個基於Jakarta Lucene項目的索引框架。LIUS為Lucene添加了對許多文件格式的進行索引功能如:Ms Word,Ms Excel,Ms PowerPoint,RTF,PDF,XML,HTML,TXT,Open Office序列和JavaBeans.針對JavaBeans的索引特別有用當我們要對數據庫進行索引或剛好用戶使用持久層ORM技術如:Hibernate,JDO,Torque,TopLink進行開發時。
Apache Solr
Solr是一個高性能,採用Java5開發,基於Lucene的全文搜索服務器。文檔通過Http利用XML加到一個搜索集合中。查詢該集合也是通過 http收到一個XML/JSON響應來實現。它的主要特性包括:高效、靈活的緩存功能,垂直搜索功能,高亮顯示搜索結果,通過索引複製來提高可用性,提供一套強大Data Schema來定義字段,類型和設置文本分析,提供基於Web的管理界面等。
Paoding
Paoding中文分詞是一個使用Java開發的,可結合到Lucene應用中的,為互聯網、企業內部網使用的中文搜索引擎分詞組件。 Paoding填補了國內中文分詞方面開源組件的空白,致力於此並希翼成為互聯網網站首選的中文分詞開源組件。 Paoding中文分詞追求分詞的高效率和用戶良好體驗。
Carrot2
Carrot2是一個開源搜索結果分類引擎。它能夠自動把搜索結果組織成一些專題分類。Carrot2提供的一個架構能夠從各種搜索引擎(YahooAPI、GoogleAPI、MSN Search API、eTools Meta Search、Alexa Web Search、PubMed、OpenSearch、Lucene index、SOLR)獲取搜索結果。
Regain
regain是一款與Web搜索引擎類似的桌面搜索引擎系統,其不同之處在於regain不是對Internet內容的搜索,而是針對自己的文檔或文件的搜索,使用regain可以輕鬆地在幾秒內完成大量數據(許多個G)的搜索。Regain採用了Lucene的搜索語法,因此支持多種查詢方式,支持多索引的搜索及基於文件類型的高級搜索,並且能實現URL重寫及文件到HTTP的橋接,並且對中文也提供了較好的支持。
Regain提供了兩種版本:桌面搜索及服務器搜索。桌面搜索提供了對普通桌面計算機的文檔與局域網環境下的網頁的快速搜索。服務器版本主要安裝在Web服務器上,為網站及局域網環境下的文件服務器進行搜索。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/156619.html