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 將全文搜索和關系數據庫整合到一起,通過SQL語句對數據庫中的數據進行全文和關系查詢。HubbleDotNet組件本身負責對全文數據進行倒排索引,并將索引存儲到表所指定的目錄下,數據的存儲則由和Hubble.net 關聯的關系數據庫完成。HubbleDotNet提供了一個 IDBAdpter 接口,用戶可以根據這個接口實現自定義的數據庫適配。如何添加自定義的數據庫適配器,將在存儲過程一節中闡述。建立倒排索引時需要對輸入的全文文本進行分詞,HubbleDotNet為用戶提供了一個 IAnalyzer 接口來完成自定義的分詞器。如何添加自定義的分詞器,將在存儲過程一節中闡述。HubbleDotNet在安裝后以一個系統服務的形式存在。 Hubble.net 提供一個 Hubble.SQLClient 組件來和HubbleDotNet的系統服務進行交互,SQLClient 的接口和Ado.net 中的SqlClient接口類型,具體將在SQLClient一節中闡述。
HubbleDotNet 和 關系數據庫一樣,存在數據庫和數據庫表的概念。Hubble.net 的數據庫和數據表只是提供一個和對應關系數據庫的映射描述關系,并不存在數據庫和數據表的實體。用戶在通過SQL 語句操作Hubble.net 的數據庫和數據表是,Hubble.net 將自動和對應的關系數據庫實體進行關聯,從用戶側看,Hubble.net就像一個數據庫實體。
HubbleDotNet負責建立文本字段的倒排索引和Untokenized字段的單值索引。關系數據庫負責建立B+樹索引。如果查詢語句不包括對全文字段的搜索,則直接轉發給數據庫利用數據庫的索引進行查詢。
如上圖所示,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 語句完成,如果只更新非全文字段,不重新索引,速度非???/p>
增量索引
支持
支持
不同字段指定不同分詞器
不支持
支持
分組統計-Group by
不支持
支持
與關系數據庫關聯
不支持
可以單表管理,多表關聯,基于現有表或視圖創建索引
并發控制
讀、寫、優化等不能同時進行
讀、寫、優化等可以同時進行
內存管理
不支持
可設定最大內存使用閾值,到這個閾值后會自動將不常訪問的緩存清理掉
重建索引(數據不動,只重建全文索引)
不支持
支持
多表關聯查詢
不支持
0.9 版本部分支持
消重-Distinct
不支持
1.0 版本提供支持
分類,聚類等數據挖掘功能
不支持
后續版本開發
總結
以上是生活随笔為你收集整理的hubbledotnet mysql_HubbleDotNet 简介的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: oracle代码实例,oracle存储过
- 下一篇: (python)GA(遗传算法)优化LS
