天天看點

hubbledotnet mysql_HubbleDotNet 簡介

系統簡介

HubbleDotNet 是一個基于.net framework 的開源免費的全文搜尋資料庫元件。開源協定是 Apache 2.0。HubbleDotNet提供了基于SQL的全文檢索接口,使用者隻需會操作SQL,就可以很快學會使用HubbleDotNet進行全文檢索。 HubbleDotNet可以實作全文索引和查詢、多域檢索和排序、分組統計、消重、分類、聚類、多表關聯查詢等等一系列全文檢索和資料挖掘功能。 HubbleDotNet提供開放的資料庫擴充卡接口,可以和各種資料庫完美整合,為各種資料庫系統附加全文檢索和資料挖掘功能。 HubbleDotNet設計了較為完善的并發控制程式,資料的增删改查可以多線程同時并發進行,沒有任何沖突。HubbleDotNet還進行了緩存和記憶體管理設計,可以幫助使用者最大限度的提高查詢的效率。HubbleDotNet力争在未來的幾年内超過Lucene.net成為.net開發環境中最受歡迎的全文檢索元件。

相關資源

1. 索引

2. 查詢

3. 删除

4. 更新

5. 基于 SQL 的SQLClient 接口

6. 索引級别緩存

7. 查詢級别緩存

8. 資料級别緩存

9. 多字段排序

10. 全文和中繼資料組合查詢

11. 關鍵字權重指定

12. 字段權重指定

13. 記錄權重指定

14. 索引自動優化

15. 索引手工優化

16. 自定義分詞器

17. 自定義資料庫擴充卡

18. 系統存儲過程

19. 查詢分析器

20. 建表,删表

21. 基于資料庫現有表或視圖建立索引

22. 和資料庫現有表或視圖索引同步

23. 分組統計

24. Match, Contains, Like 三種查詢方式

25. 拆離和附加 (備份和恢複)索引

hubbledotnet mysql_HubbleDotNet 簡介

HubbleDotNet 将全文搜尋和關系資料庫整合到一起,通過SQL語句對資料庫中的資料進行全文和關系查詢。HubbleDotNet元件本身負責對全文資料進行反向索引,并将索引存儲到表所指定的目錄下,資料的存儲則由和Hubble.net 關聯的關系資料庫完成。HubbleDotNet提供了一個 IDBAdpter 接口,使用者可以根據這個接口實作自定義的資料庫适配。如何添加自定義的資料庫擴充卡,将在存儲過程一節中闡述。建立反向索引時需要對輸入的全文文本進行分詞,HubbleDotNet為使用者提供了一個 IAnalyzer 接口來完成自定義的分詞器。如何添加自定義的分詞器,将在存儲過程一節中闡述。HubbleDotNet在安裝後以一個系統服務的形式存在。 Hubble.net 提供一個 Hubble.SQLClient 元件來和HubbleDotNet的系統服務進行互動,SQLClient 的接口和Ado.net 中的SqlClient接口類型,具體将在SQLClient一節中闡述。

hubbledotnet mysql_HubbleDotNet 簡介

HubbleDotNet 和 關系資料庫一樣,存在資料庫和資料庫表的概念。Hubble.net 的資料庫和資料表隻是提供一個和對應關系資料庫的映射描述關系,并不存在資料庫和資料表的實體。使用者在通過SQL 語句操作Hubble.net 的資料庫和資料表是,Hubble.net 将自動和對應的關系資料庫實體進行關聯,從使用者側看,Hubble.net就像一個資料庫實體。

HubbleDotNet負責建立文本字段的反向索引和Untokenized字段的單值索引。關系資料庫負責建立B+樹索引。如果查詢語句不包括對全文字段的搜尋,則直接轉發給資料庫利用資料庫的索引進行查詢。

hubbledotnet mysql_HubbleDotNet 簡介

如上圖所示,HubbleDotNet提供三種級别的緩存方案。

Index cache :索引級别緩存用于緩存反向索引和單值索引。這種緩存為系統自動管理,不能關閉。索引級别緩存會自動監控資料的增删改,并進行相應修改。

Query cache :查詢級别緩存對查詢的條件進行緩存,Hubble.net 系統服務會将不同查詢條件對應的文檔ID(DocId)緩存下來,下次查詢時直接從緩存中擷取符合條件的文檔ID,不再通路低級别緩存或索引。和索引級别緩存不同的是,當表的資料發生變化時,查詢級别緩存将會失效,需要重新緩存。

Data cache :資料級别緩存運作在用戶端,用戶端查詢得到的資料被緩存下來,下次查詢時将從資料緩存中直接擷取資料,而不再到Hubble.net 系統服務中去擷取資料。和查詢級别緩存一樣,表的資料發生變化時,資料級别緩存将會失效,需要重新緩存。

HubbleDotNet設計了非常完善的并發控制機制,使用者的增删改查可以同時進行,不會存在任何沖突。

HubbleDotNet 以系統服務存在,不會像Lucene那樣和應用程式共用記憶體。HubbleDotNet設計了一套記憶體管理機制,使用者可以設定最大記憶體使用數量,一旦 HubbleDotNet使用記憶體超過這個數量,HubbleDotNet就會自動啟動記憶體整理程式,将一些不經常使用的緩存從記憶體中清理掉以騰出更多的記憶體空間給使用者。使用者可以通過 SP_CONFIGURE 存儲過程來檢視和管理記憶體。

HubbleDotNet 與 Lucene.net 的功能對比

功能

Lucene.net

HubbleDotNet

按詞條搜尋—TermQuery

支援

支援

“與或”搜尋—BooleanQuery

支援

支援

在某一範圍内搜尋—RangeQuery

支援

支援

使用字首搜尋—PrefixQuery

支援

支援

多關鍵字的搜尋—PhraseQuery

支援

支援

相近詞語的搜尋—FuzzyQuery

支援

通過分詞來實作,EnglishAnalyzer 可以完成類似功能

使用通配符搜尋—WildcardQuery

支援

通過分詞來解決,盤古分詞的最新版本已經提供類似解決方案

Contains-多個關鍵字之間按與方式比對

不支援

支援

Like-類似資料庫的Like '%xx%'

不支援

支援

更新資料-Update

需要删除後再添加

直接調用 Update 語句完成,如果隻更新非全文字段,不重新索引,速度非常快

增量索引

支援

支援

不同字段指定不同分詞器

不支援

支援

分組統計-Group by

不支援

支援

與關系資料庫關聯

不支援

可以單表管理,多表關聯,基于現有表或視圖建立索引

并發控制

讀、寫、優化等不能同時進行

讀、寫、優化等可以同時進行

記憶體管理

不支援

可設定最大記憶體使用門檻值,到這個門檻值後會自動将不常通路的緩存清理掉

重建索引(資料不動,隻重建全文索引)

不支援

支援

多表關聯查詢

不支援

0.9 版本部分支援

消重-Distinct

不支援

1.0 版本提供支援

分類,聚類等資料挖掘功能

不支援

後續版本開發