這篇文章主要講解了“什么是全文檢索技術”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“什么是全文檢索技術”吧!
站在用戶的角度思考問題,與客戶深入溝通,找到白云網(wǎng)站設計與白云網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:做網(wǎng)站、成都網(wǎng)站建設、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、網(wǎng)絡空間、企業(yè)郵箱。業(yè)務覆蓋白云地區(qū)。
全文搜索引擎是目前廣泛應用的主流搜索引擎。它的工作原理是計算機索引程序通過掃描文章中的每一個詞,對每一個詞建立一個索引,指明該詞在文章中出現(xiàn)的次數(shù)和位置,當用戶查詢時,檢索程序就根據(jù)事先建立的索引進行查找,并將查找的結果反饋給用戶的檢索方式。這個過程類似于通過字典中的檢索字表查字的過程。
從定義中我們已經(jīng)可以大致了解全文檢索的思路了,為了更詳細的說明,我們先從生活中的數(shù)據(jù)說起。
我們生活中的數(shù)據(jù)總體分為兩種:結構化數(shù)據(jù)和 非結構化數(shù)據(jù)。
結構化數(shù)據(jù): 指具有固定格式或有限長度的數(shù)據(jù),如數(shù)據(jù)庫,元數(shù)據(jù)等。
非結構化數(shù)據(jù): 非結構化數(shù)據(jù)又可稱為全文數(shù)據(jù),指不定長或無固定格式的數(shù)據(jù),如郵件,word文檔等。
半結構化數(shù)據(jù),如XML,HTML等,當根據(jù)需要可按結構化數(shù)據(jù)來處理,也可抽取出純文本按非結構化數(shù)據(jù)來處理。
根據(jù)兩種數(shù)據(jù)分類,搜索也相應的分為兩種:結構化數(shù)據(jù)搜索和非結構化數(shù)據(jù)搜索。
對于結構化數(shù)據(jù),我們一般都是可以通過關系型數(shù)據(jù)庫(MySQL,oracle等)的 table 的方式存儲和搜索,也可以建立索引。 對于非結構化數(shù)據(jù),也即對全文數(shù)據(jù)的搜索主要有兩種方法:順序掃描法,全文檢索。
順序掃描:通過文字名稱也可了解到它的大概搜索方式,即按照順序掃描的方式查詢特定的關鍵字。 例如給你一張報紙,讓你找到該報紙中“RNG”的文字在哪些地方出現(xiàn)過。你肯定需要從頭到尾把報紙閱讀掃描一遍然后標記出關鍵字在哪些版塊出現(xiàn)過以及它的出現(xiàn)位置。
這種方式無疑是最耗時的最低效的,如果報紙排版字體小,而且版塊較多甚至有多份報紙,等你掃描完你的眼睛也差不多了。
全文搜索:對非結構化數(shù)據(jù)順序掃描很慢,我們是否可以進行優(yōu)化?把我們的非結構化數(shù)據(jù)想辦法弄得有一定結構不就行了嗎?將非結構化數(shù)據(jù)中的一部分信息提取出來,重新組織,使其變得有一定結構,然后對此有一定結構的數(shù)據(jù)進行搜索,從而達到搜索相對較快的目的。這種方式就構成了全文檢索的基本思路。這部分從非結構化數(shù)據(jù)中提取出的然后重新組織的信息,我們稱之索引。
還以讀報紙為例,我們想關注最近英雄聯(lián)盟S8全球總決賽的新聞,假如都是 RNG 的粉絲,如何快速找到 RNG 新聞的報紙和版塊呢?全文搜索的方式就是,將所有報紙中所有版塊中關鍵字進行提取,如"EDG","RNG","FW","戰(zhàn)隊","英雄聯(lián)盟"等。然后對這些關鍵字建立索引,通過索引我們就可以對應到該關鍵詞出現(xiàn)的報紙和版塊。注意區(qū)別目錄搜索引擎。
為什么要用搜索引擎?我們的所有數(shù)據(jù)在數(shù)據(jù)庫里面都有,而且 Oracle、SQL Server 等數(shù)據(jù)庫里也能提供查詢檢索或者聚類分析功能,直接通過數(shù)據(jù)庫查詢不就可以了嗎?確實,我們大部分的查詢功能都可以通過數(shù)據(jù)庫查詢獲得,如果查詢效率低下,還可以通過建數(shù)據(jù)庫索引,優(yōu)化SQL等方式進行提升效率,甚至通過引入緩存來加快數(shù)據(jù)的返回速度。如果數(shù)據(jù)量更大,就可以分庫分表來分擔查詢壓力。
那為什么還要全文搜索引擎呢?我們主要從以下幾個原因分析:
數(shù)據(jù)類型全文索引搜索支持非結構化數(shù)據(jù)的搜索,可以更好地快速搜索大量存在的任何單詞或單詞組的非結構化文本。 例如 Google,百度類的網(wǎng)站搜索,它們都是根據(jù)網(wǎng)頁中的關鍵字生成索引,我們在搜索的時候輸入關鍵字,它們會將該關鍵字即索引匹配到的所有網(wǎng)頁返回;還有常見的項目中應用日志的搜索等等。對于這些非結構化的數(shù)據(jù)文本,關系型數(shù)據(jù)庫搜索不是能很好的支持。
索引的維護一般傳統(tǒng)數(shù)據(jù)庫,全文檢索都實現(xiàn)的很雞肋,因為一般也沒人用數(shù)據(jù)庫存文本字段。進行全文檢索需要掃描整個表,如果數(shù)據(jù)量大的話即使對SQL的語法優(yōu)化,也收效甚微。建立了索引,但是維護起來也很麻煩,對于 insert 和 update 操作都會重新構建索引。
什么時候使用全文搜索引擎:
搜索的數(shù)據(jù)對象是大量的非結構化的文本數(shù)據(jù)。
文件記錄量達到數(shù)十萬或數(shù)百萬個甚至更多。
支持大量基于交互式文本的查詢。
需求非常靈活的全文搜索查詢。
對高度相關的搜索結果的有特殊需求,但是沒有可用的關系數(shù)據(jù)庫可以滿足。
對不同記錄類型、非文本數(shù)據(jù)操作或安全事務處理的需求相對較少的情況。
Lucene是一個Java全文搜索引擎,完全用Java編寫。Lucene不是一個完整的應用程序,而是一個代碼庫和API,可以很容易地用于向應用程序添加搜索功能。
Lucene通過簡單的API提供強大的功能:
可擴展的高性能索引
在現(xiàn)代硬件上超過150GB /小時
小RAM要求 - 只有1MB堆
增量索引與批量索引一樣快
索引大小約為索引文本大小的20-30%
強大,準確,高效的搜索算法
排名搜索 - 首先返回最佳結果
許多強大的查詢類型:短語查詢,通配符查詢,鄰近查詢,范圍查詢等
現(xiàn)場搜索(例如標題,作者,內(nèi)容)
按任何字段排序
使用合并結果進行多索引搜索
允許同時更新和搜索
靈活的分面,突出顯示,連接和結果分組
快速,內(nèi)存效率和錯誤容忍的建議
可插拔排名模型,包括矢量空間模型和Okapi BM25
可配置存儲引擎(編解碼器)
跨平臺解決方案
作為Apache許可下的開源軟件提供 ,允許您在商業(yè)和開源程序中使用Lucene
100%-pure Java
可用的其他編程語言中的實現(xiàn)是索引兼容的
Apache軟件基金會在Apache軟件基金會提供的開源軟件項目的Apache社區(qū)的支持。
但是Lucene只是一個框架,要充分利用它的功能,需要使用JAVA,并且在程序中集成Lucene。需要很多的學習了解,才能明白它是如何運行的,熟練運用Lucene確實非常復雜。
Apache Solr是一個基于名為Lucene的Java庫構建的開源搜索平臺。它以用戶友好的方式提供Apache Lucene的搜索功能。作為一個行業(yè)參與者近十年,它是一個成熟的產(chǎn)品,擁有強大而廣泛的用戶社區(qū)。它提供分布式索引,復制,負載平衡查詢以及自動故障轉移和恢復。如果它被正確部署然后管理得好,它就能夠成為一個高度可靠,可擴展且容錯的搜索引擎。很多互聯(lián)網(wǎng)巨頭,如Netflix,eBay,Instagram和亞馬遜(CloudSearch)都使用Solr,因為它能夠索引和搜索多個站點。
主要功能列表包括:
全文搜索
突出
分面搜索
實時索引
動態(tài)群集
數(shù)據(jù)庫集成
NOSQL功能和豐富的文檔處理(例如Word和PDF文件)
Elasticsearch是一個開源(Apache 2許可證),是一個基于Apache Lucene庫構建的RESTful搜索引擎。
Elasticsearch是在Solr之后幾年推出的。它提供了一個分布式,多租戶能力的全文搜索引擎,具有HTTP Web界面(REST)和無架構JSON文檔。Elasticsearch的官方客戶端庫提供Java,Groovy,PHP,Ruby,Perl,Python,.NET和Javascript。
分布式搜索引擎包括可以劃分為分片的索引,并且每個分片可以具有多個副本。每個Elasticsearch節(jié)點都可以有一個或多個分片,其引擎也可以充當協(xié)調(diào)器,將操作委派給正確的分片。
Elasticsearch可通過近實時搜索進行擴展。其主要功能之一是多租戶。
主要功能列表包括:
分布式搜索
多租戶
分析搜索
分組和聚合
由于Lucene的復雜性,一般很少會考慮它作為搜索的第一選擇,排除一些公司需要自研搜索框架,底層需要依賴Lucene。所以這里我們重點分析 Elasticsearch 和 Solr。
Elasticsearch vs. Solr。哪一個更好?他們有什么不同?你應該使用哪一個?
Apache Solr是一個成熟的項目,擁有龐大而活躍的開發(fā)和用戶社區(qū),以及Apache品牌。Solr于2006年首次發(fā)布到開源,長期以來一直占據(jù)著搜索引擎領域,并且是任何需要搜索功能的人的首選引擎。它的成熟轉化為豐富的功能,而不僅僅是簡單的文本索引和搜索; 如分面,分組,強大的過濾,可插入的文檔處理,可插入的搜索鏈組件,語言檢測等。
Solr 在搜索領域占據(jù)了多年的主導地位。然后,在2010年左右,Elasticsearch成為市場上的另一種選擇。那時候,它遠沒有Solr那么穩(wěn)定,沒有Solr的功能深度,沒有思想分享,品牌等等。
Elasticsearch雖然很年輕,但它也自己的一些優(yōu)勢,Elasticsearch 建立在更現(xiàn)代的原則上,針對更現(xiàn)代的用例,并且是為了更容易處理大型索引和高查詢率而構建的。此外,由于它太年輕,沒有社區(qū)可以合作,它可以自由地向前推進,而不需要與其他人(用戶或開發(fā)人員)達成任何共識或合作,向后兼容,或任何其他更成熟的軟件通常必須處理。
因此,它在Solr之前就公開了一些非常受歡迎的功能(例如,接近實時搜索,英文:Near Real-Time Search)。從技術上講,NRT搜索的能力確實來自Lucene,它是 Solr 和 Elasticsearch 使用的基礎搜索庫。具有諷刺意味的是,因為 Elasticsearch 首先公開了NRT搜索,所以人們將NRT搜索與Elasticsearch 聯(lián)系在一起,盡管 Solr 和 Lucene 都是同一個 Apache 項目的一部分,因此,人們會首先期望 Solr 具有如此高要求的功能。
特征 | Solr/SolrCloud | Elasticsearch |
---|---|---|
社區(qū)和開發(fā)者 | Apache 軟件基金和社區(qū)支持 | 單一商業(yè)實體及其員工 |
節(jié)點發(fā)現(xiàn) | Apache Zookeeper,在大量項目中成熟且經(jīng)過實戰(zhàn)測試 | Zen內(nèi)置于Elasticsearch本身,需要專用的主節(jié)點才能進行分裂腦保護 |
碎片放置 | 本質(zhì)上是靜態(tài),需要手動工作來遷移分片,從Solr 7開始 - Autoscaling API允許一些動態(tài)操作 | 動態(tài),可以根據(jù)群集狀態(tài)按需移動分片 |
高速緩存 | 全局,每個段更改無效 | 每段,更適合動態(tài)更改數(shù)據(jù) |
分析引擎性能 | 非常適合精確計算的靜態(tài)數(shù)據(jù) | 結果的準確性取決于數(shù)據(jù)放置 |
全文搜索功能 | 基于Lucene的語言分析,多建議,拼寫檢查,豐富的高亮顯示支持 | 基于Lucene的語言分析,單一建議API實現(xiàn),高亮顯示重新計算 |
DevOps支持 | 尚未完全,但即將到來 | 非常好的API |
非平面數(shù)據(jù)處理 | 嵌套文檔和父-子支持 | 嵌套和對象類型的自然支持允許幾乎無限的嵌套和父-子支持 |
查詢DSL | JSON(有限),XML(有限)或URL參數(shù) | JSON |
索引/收集領導控制 | 領導者安置控制和領導者重新平衡甚至可以節(jié)點上的負載 | 不可能 |
機器學習 | 內(nèi)置 - 在流聚合之上,專注于邏輯回歸和學習排名貢獻模塊 | 商業(yè)功能,專注于異常和異常值以及時間序列數(shù)據(jù) |
感謝各位的閱讀,以上就是“什么是全文檢索技術”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對什么是全文檢索技術這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!
當前標題:什么是全文檢索技術
文章分享:http://bm7419.com/article14/jcehde.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、外貿(mào)建站、定制開發(fā)、網(wǎng)站維護、網(wǎng)頁設計公司、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)