現(xiàn)在的客戶對(duì)搜索的要求越來越高,為了適應(yīng)不同的項(xiàng)目。我們希望可以我們的全文檢索做成中間件的形式開放出去出去,給不同的Team使用。在這樣的想法下,我們?cè)O(shè)計(jì)了搜索服務(wù)器中間件的第一個(gè)版本。
開源的全文檢索工具有:
Solr:Solr是一個(gè)高性能,采用Java5開發(fā),基于Lucene的全文搜索服務(wù)器。文檔通過Http利用XML加到一個(gè)搜索集合中。查詢?cè)摷弦彩峭ㄟ^ http收到一個(gè)XML/JSON響應(yīng)來實(shí)現(xiàn)。它的主要特性包括:高效、靈活的緩存功能,垂直搜索功能,高亮顯示搜索結(jié)果,通過索引復(fù)制來提高可用性,提 供一套強(qiáng)大Data Schema來定義字段,類型和設(shè)置文本分析,提供基于Web的管理界面等。
Sphinx:Sphinx是一個(gè)基于SQL的全文檢索引擎,可以結(jié)合MySQL,PostgreSQL做全文搜索,它可以提供比數(shù)據(jù)庫本身更專業(yè)的搜索功能,使得應(yīng)用程序更容易實(shí)現(xiàn)專業(yè)化的全文檢索。Sphinx特別為一些腳本語言設(shè)計(jì)搜索API接口,如PHP,Python,Perl,Ruby等,同時(shí)為MySQL也設(shè)計(jì)了一個(gè)存儲(chǔ)引擎插件。Sphinx 單一索引最大可包含1億條記錄,在1千萬條記錄情況下的查詢速度為0.x秒(毫秒級(jí))。Sphinx創(chuàng)建索引的速度為:創(chuàng)建100萬條記錄的索引只需 3~4分鐘,創(chuàng)建1000萬條記錄的索引可以在50分鐘內(nèi)完成,而只包含最新10萬條記錄的增量索引,重建一次只需幾十秒。
HubbleDotNet:HubbleDotNet 是一個(gè)基于.net framework 的開源免費(fèi)的全文搜索引擎組件。開源協(xié)議是 Apache 2.0。HubbleDotNet提供了基于SQL的全文檢索接口,使用者只需會(huì)操作SQL,就可以很快學(xué)會(huì)使用HubbleDotNet進(jìn)行全文檢索。HubbleDotNet可以實(shí)現(xiàn)全文索引和查詢、多域檢索和排序、分組統(tǒng)計(jì)、消重、分類、聚類、多表關(guān)聯(lián)查詢等等一系列全文檢索和數(shù)據(jù)挖掘功能。 HubbleDotNet提供開放的數(shù)據(jù)庫適配器接口,可以和各種數(shù)據(jù)庫完美整合,為各種數(shù)據(jù)庫系統(tǒng)附加全文檢索和數(shù)據(jù)挖掘功能。 HubbleDotNet設(shè)計(jì)了較為完善的并發(fā)控制程序,數(shù)據(jù)的增刪改查可以多線程同時(shí)并發(fā)進(jìn)行,沒有任何沖突。HubbleDotNet還進(jìn)行了緩存和 內(nèi)存管理設(shè)計(jì),可以幫助用戶最大限度的提高查詢的效率。
Lucene:這個(gè)估計(jì)大家都知道,就不介紹
我們其實(shí)完成的功能跟Solr類似,就是基于Lucene完成搜索服務(wù)器(中間件)。
為什么我們不用solr.因?yàn)槲覀僼eam是基礎(chǔ)C#的,所以我們用C#自己去寫,我們更容易控制。我們要根據(jù)我們業(yè)務(wù)需要更靈活。性能上,由于 Solr 的建索引和搜索是同一個(gè)進(jìn)程,耦合度比較高,對(duì)于性能調(diào)優(yōu)有一定的影響。
這個(gè)是我們?cè)O(shè)計(jì)中間的件的結(jié)構(gòu)圖
聯(lián)系客服