hubbledotnet mysql_HubbleDotNet 简介
系統(tǒng)簡(jiǎn)介
HubbleDotNet 是一個(gè)基于.net framework 的開源免費(fèi)的全文搜索數(shù)據(jù)庫(kù)組件。開源協(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ù)庫(kù)適配器接口,可以和各種數(shù)據(jù)庫(kù)完美整合,為各種數(shù)據(jù)庫(kù)系統(tǒng)附加全文檢索和數(shù)據(jù)挖掘功能。 HubbleDotNet設(shè)計(jì)了較為完善的并發(fā)控制程序,數(shù)據(jù)的增刪改查可以多線程同時(shí)并發(fā)進(jìn)行,沒有任何沖突。HubbleDotNet還進(jìn)行了緩存和內(nèi)存管理設(shè)計(jì),可以幫助用戶最大限度的提高查詢的效率。HubbleDotNet力爭(zhēng)在未來的幾年內(nèi)超過Lucene.net成為.net開發(fā)環(huán)境中最受歡迎的全文檢索組件。
相關(guān)資源
1. 索引
2. 查詢
3. 刪除
4. 更新
5. 基于 SQL 的SQLClient 接口
6. 索引級(jí)別緩存
7. 查詢級(jí)別緩存
8. 數(shù)據(jù)級(jí)別緩存
9. 多字段排序
10. 全文和元數(shù)據(jù)組合查詢
11. 關(guān)鍵字權(quán)重指定
12. 字段權(quán)重指定
13. 記錄權(quán)重指定
14. 索引自動(dòng)優(yōu)化
15. 索引手工優(yōu)化
16. 自定義分詞器
17. 自定義數(shù)據(jù)庫(kù)適配器
18. 系統(tǒng)存儲(chǔ)過程
19. 查詢分析器
20. 建表,刪表
21. 基于數(shù)據(jù)庫(kù)現(xiàn)有表或視圖創(chuàng)建索引
22. 和數(shù)據(jù)庫(kù)現(xiàn)有表或視圖索引同步
23. 分組統(tǒng)計(jì)
24. Match, Contains, Like 三種查詢方式
25. 拆離和附加 (備份和恢復(fù))索引
HubbleDotNet 將全文搜索和關(guān)系數(shù)據(jù)庫(kù)整合到一起,通過SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行全文和關(guān)系查詢。HubbleDotNet組件本身負(fù)責(zé)對(duì)全文數(shù)據(jù)進(jìn)行倒排索引,并將索引存儲(chǔ)到表所指定的目錄下,數(shù)據(jù)的存儲(chǔ)則由和Hubble.net 關(guān)聯(lián)的關(guān)系數(shù)據(jù)庫(kù)完成。HubbleDotNet提供了一個(gè) IDBAdpter 接口,用戶可以根據(jù)這個(gè)接口實(shí)現(xiàn)自定義的數(shù)據(jù)庫(kù)適配。如何添加自定義的數(shù)據(jù)庫(kù)適配器,將在存儲(chǔ)過程一節(jié)中闡述。建立倒排索引時(shí)需要對(duì)輸入的全文文本進(jìn)行分詞,HubbleDotNet為用戶提供了一個(gè) IAnalyzer 接口來完成自定義的分詞器。如何添加自定義的分詞器,將在存儲(chǔ)過程一節(jié)中闡述。HubbleDotNet在安裝后以一個(gè)系統(tǒng)服務(wù)的形式存在。 Hubble.net 提供一個(gè) Hubble.SQLClient 組件來和HubbleDotNet的系統(tǒng)服務(wù)進(jìn)行交互,SQLClient 的接口和Ado.net 中的SqlClient接口類型,具體將在SQLClient一節(jié)中闡述。
HubbleDotNet 和 關(guān)系數(shù)據(jù)庫(kù)一樣,存在數(shù)據(jù)庫(kù)和數(shù)據(jù)庫(kù)表的概念。Hubble.net 的數(shù)據(jù)庫(kù)和數(shù)據(jù)表只是提供一個(gè)和對(duì)應(yīng)關(guān)系數(shù)據(jù)庫(kù)的映射描述關(guān)系,并不存在數(shù)據(jù)庫(kù)和數(shù)據(jù)表的實(shí)體。用戶在通過SQL 語(yǔ)句操作Hubble.net 的數(shù)據(jù)庫(kù)和數(shù)據(jù)表是,Hubble.net 將自動(dòng)和對(duì)應(yīng)的關(guān)系數(shù)據(jù)庫(kù)實(shí)體進(jìn)行關(guān)聯(lián),從用戶側(cè)看,Hubble.net就像一個(gè)數(shù)據(jù)庫(kù)實(shí)體。
HubbleDotNet負(fù)責(zé)建立文本字段的倒排索引和Untokenized字段的單值索引。關(guān)系數(shù)據(jù)庫(kù)負(fù)責(zé)建立B+樹索引。如果查詢語(yǔ)句不包括對(duì)全文字段的搜索,則直接轉(zhuǎn)發(fā)給數(shù)據(jù)庫(kù)利用數(shù)據(jù)庫(kù)的索引進(jìn)行查詢。
如上圖所示,HubbleDotNet提供三種級(jí)別的緩存方案。
Index cache :索引級(jí)別緩存用于緩存倒排索引和單值索引。這種緩存為系統(tǒng)自動(dòng)管理,不能關(guān)閉。索引級(jí)別緩存會(huì)自動(dòng)監(jiān)控?cái)?shù)據(jù)的增刪改,并進(jìn)行相應(yīng)修改。
Query cache :查詢級(jí)別緩存對(duì)查詢的條件進(jìn)行緩存,Hubble.net 系統(tǒng)服務(wù)會(huì)將不同查詢條件對(duì)應(yīng)的文檔ID(DocId)緩存下來,下次查詢時(shí)直接從緩存中獲取符合條件的文檔ID,不再訪問低級(jí)別緩存或索引。和索引級(jí)別緩存不同的是,當(dāng)表的數(shù)據(jù)發(fā)生變化時(shí),查詢級(jí)別緩存將會(huì)失效,需要重新緩存。
Data cache :數(shù)據(jù)級(jí)別緩存運(yùn)行在客戶端,客戶端查詢得到的數(shù)據(jù)被緩存下來,下次查詢時(shí)將從數(shù)據(jù)緩存中直接獲取數(shù)據(jù),而不再到Hubble.net 系統(tǒng)服務(wù)中去獲取數(shù)據(jù)。和查詢級(jí)別緩存一樣,表的數(shù)據(jù)發(fā)生變化時(shí),數(shù)據(jù)級(jí)別緩存將會(huì)失效,需要重新緩存。
HubbleDotNet設(shè)計(jì)了非常完善的并發(fā)控制機(jī)制,用戶的增刪改查可以同時(shí)進(jìn)行,不會(huì)存在任何沖突。
HubbleDotNet 以系統(tǒng)服務(wù)存在,不會(huì)像Lucene那樣和應(yīng)用程序共用內(nèi)存。HubbleDotNet設(shè)計(jì)了一套內(nèi)存管理機(jī)制,用戶可以設(shè)置最大內(nèi)存使用數(shù)量,一旦 HubbleDotNet使用內(nèi)存超過這個(gè)數(shù)量,HubbleDotNet就會(huì)自動(dòng)啟動(dòng)內(nèi)存整理程序,將一些不經(jīng)常使用的緩存從內(nèi)存中清理掉以騰出更多的內(nèi)存空間給用戶。用戶可以通過 SP_CONFIGURE 存儲(chǔ)過程來查看和管理內(nèi)存。
HubbleDotNet 與 Lucene.net 的功能對(duì)比
功能
Lucene.net
HubbleDotNet
按詞條搜索—TermQuery
支持
支持
“與或”搜索—BooleanQuery
支持
支持
在某一范圍內(nèi)搜索—RangeQuery
支持
支持
使用前綴搜索—PrefixQuery
支持
支持
多關(guān)鍵字的搜索—PhraseQuery
支持
支持
相近詞語(yǔ)的搜索—FuzzyQuery
支持
通過分詞來實(shí)現(xiàn),EnglishAnalyzer 可以完成類似功能
使用通配符搜索—WildcardQuery
支持
通過分詞來解決,盤古分詞的最新版本已經(jīng)提供類似解決方案
Contains-多個(gè)關(guān)鍵字之間按與方式匹配
不支持
支持
Like-類似數(shù)據(jù)庫(kù)的Like '%xx%'
不支持
支持
更新數(shù)據(jù)-Update
需要?jiǎng)h除后再添加
直接調(diào)用 Update 語(yǔ)句完成,如果只更新非全文字段,不重新索引,速度非常快
增量索引
支持
支持
不同字段指定不同分詞器
不支持
支持
分組統(tǒng)計(jì)-Group by
不支持
支持
與關(guān)系數(shù)據(jù)庫(kù)關(guān)聯(lián)
不支持
可以單表管理,多表關(guān)聯(lián),基于現(xiàn)有表或視圖創(chuàng)建索引
并發(fā)控制
讀、寫、優(yōu)化等不能同時(shí)進(jìn)行
讀、寫、優(yōu)化等可以同時(shí)進(jìn)行
內(nèi)存管理
不支持
可設(shè)定最大內(nèi)存使用閾值,到這個(gè)閾值后會(huì)自動(dòng)將不常訪問的緩存清理掉
重建索引(數(shù)據(jù)不動(dòng),只重建全文索引)
不支持
支持
多表關(guān)聯(lián)查詢
不支持
0.9 版本部分支持
消重-Distinct
不支持
1.0 版本提供支持
分類,聚類等數(shù)據(jù)挖掘功能
不支持
后續(xù)版本開發(fā)
總結(jié)
以上是生活随笔為你收集整理的hubbledotnet mysql_HubbleDotNet 简介的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle代码实例,oracle存储过
- 下一篇: oracle数据库快照打点,Oracle