日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

全文搜索概述

發(fā)布時間:2024/4/13 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全文搜索概述 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
搜索也稱之為檢索,大家對于搜索檢索并不陌生,比如我們在瀏覽器里用百度,谷歌,對于某個問題進行搜素,又比如我們在逛論壇的時候,我們想做某個技術相關的帖子,我們也要到搜索框里搜一搜,相關的結果看一看,這是一個搜素,還有就是我們在操作關系型數(shù)據(jù)庫的時候,我們其實查詢數(shù)據(jù)結果的話,他本身也是一個搜索的過程,我們根據(jù)我們的SQL語句,數(shù)據(jù)庫會執(zhí)行搜索,把匹配到的一些結果,返回給用戶,這也是一個搜索,以上提到的這些搜索,跟我們今天講的全文搜索,他有什么聯(lián)系呢,首先會對概念進行一個介紹,對ElasticSearch做一個簡介,這款產(chǎn)品的核心概念也會做一個介紹,同時ES對Spring Boot做一個繼承,應用做一個講解,可以掌握這門技術,首先我們來談一談全文搜索的概念,首先我們講一講數(shù)據(jù)結構,數(shù)據(jù)結構有哪些類型的數(shù)據(jù)結構呢,首先是結構化的數(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ù),非結構化的數(shù)據(jù)的話,我們怎么來進行一個搜索,大家如果用過數(shù)據(jù)庫,關系型數(shù)據(jù)庫,對于結構化數(shù)據(jù)查詢的話,應該是非常熟悉的,那么非結構化的數(shù)據(jù)我們怎么進行搜索呢

非結構化數(shù)據(jù)搜索是有以下幾種方式的,第一種是順序掃描法,那么什么是順序掃描法,字面理解,比如我要在一個文檔里面,查找某個字符串,順序掃描法就是從頭到尾,把文檔里面的文本,一個一個的匹配過去,最終匹配到了,這個就是順序掃描法,從頭到尾就是這么找下去,這種方法在操作系統(tǒng)里面是比較常見的,這個搜索文件的時候,他用的就是順序掃描法,還有在linux下,用grep命令的時候也是順序掃描,那么這種順序掃描的方式的話,對于小數(shù)巨量的文件的話,那還是比較方便的,比如在我的硬盤里面,有很多資料,那我要搜索,如果你硬盤里面數(shù)據(jù)量很小,只有幾個兆幾個G的,你馬上可能就能搜索的到,比如我要找某個名稱的文件的話,那應該很快就能夠找的到,但是如果你硬盤幾百個G的文件,或者說數(shù)據(jù)量很大,文件數(shù)量很多,那么你用這種方式來搜索,很慢,用過windows系統(tǒng)的話就知道,又時候你硬盤放太多的視頻,然后你去找很慢很慢,所以順序掃描法的話,他比較適合比較小數(shù)據(jù)量的文件,對于大文件的話,這種方式就比較慢了,如果是用到大文件的話,我們 還是要采用全文搜索的方式,什么是全文搜索,其實就是非結構化數(shù)據(jù)的一部分信息,提取出來,重新進行一個組織,使其變得有一定的結構,然后對這個有一定結構的數(shù)據(jù),從而達到搜索較快的目的,所以我們從過程我們就可以理解,所謂的全文搜索,所謂的非結構化數(shù)據(jù),其實就是講非結構化一部分的數(shù)據(jù),就是講非結構化的數(shù)據(jù)轉為結構化的數(shù)據(jù),然后創(chuàng)建索引,來實現(xiàn)搜索這個目的,所以全文搜索和數(shù)據(jù)的一個搜索,走的是一個套路,假設我是結構化的數(shù)據(jù),就是采用結構化數(shù)據(jù)的搜索,假設我是一個非結構化的數(shù)據(jù),那我就把它轉成結構化的數(shù)據(jù),然后建立索引再搜索,所以他們走的是一樣的套路,那么從非結構化提取然后重新組織信息呢,我們就稱之為索引,那么如何來理解這個索引呢,用過字典的話都知道,一本字典永遠有很多的漢字,包括漢字的解釋啊,漢字的拼音,很厚的一本,幾百頁,那我如何來搜索某個漢字,在茫茫的幾千個漢字里面,如何找到我想要的那個漢字呢,如果你沒有學過搜索的技術,我小學沒有學習字典方法的時候,我要找漢字的話是從第一頁開始,從第一頁開始翻,然后一直翻翻最后一頁,當然在翻的過程中,搜到了我想要的那個字,這就是順序掃描法,我沒有用全文搜索技術的時候,只能采用順序掃描法,順序掃描法的話,你要搜到,肯定跟你字的排序有一定的關系,比如我這個字剛好是排在第一頁的,你一翻,就剛好翻到了,這個時候就要博一下運氣了,正常情況下你要翻你要翻很多頁,我才搜到這個漢字,這種搜索方式是很慢的,那么全文搜索是怎么干呢,我這個字典為每個漢字都建立起了一套規(guī)則,怎么建立一套規(guī)則呢,我每個漢字都有一定規(guī)律的,漢字他都有偏旁,這是一種規(guī)律,或者漢字他都有筆畫,比如我這個全文的全字,這也是他的規(guī)律,還有一種呢,就是用拼音來搜索,字母q就是全字的一個索引,剛才提到的規(guī)則就是索引,那我們要查這個全的時候,也有這么幾種策略,一種是按照偏旁來搜,這是一種策略,然后按照拼音來搜,這也是一種策略,所以全文搜索的話,他有很多的策略,那么最終的目的,都是為了加快這個搜索

全文搜索的概念就比較好理解了,其實就是在一個文件中,文件中的所有文本,我們要搜索的項,來進行匹配的一種檢索方式,這就是全文檢索

全文搜索實現(xiàn)的一個原理,是什么樣呢,大家從字典中,字典例子中大概也可以理解了,一個原理是什么樣的,首先是要建立文本庫,建立文本庫是什么意思呢,其實就是我要建立我要搜索的數(shù)據(jù)源,我是一本字典,我肯定要把我所有的漢字,收納進來,就是我要搜索的數(shù)據(jù)源是什么,而不建立起數(shù)據(jù)源,第一步是要建立起文本庫,其次我們要把所有的文本,要把索引建立起來,比如以字典為例,我所有的這些漢字,我要提取他的一些規(guī)律出來,所謂的規(guī)律就是索引,以偏旁的規(guī)律建立一套索引起來,或者說按照拼音來的,那么拼音也是需要建立一套索引來的,這是一個索引,索引在不同的搜索引擎里面,他搜索策略肯定是不同的,那么建立索引的策略,也是不同的,然后是執(zhí)行搜索,一般是由用戶來發(fā)起,這個搜索引擎才會搜索,然后對請求做一些處理,然后把信息返回給用戶,那一般來說,將結果返回給用戶之前,其實還要做一道過濾的,為什么要做一道過濾的,其實比較好理解了,比如我們在谷歌或者百度里面,對某一個文本進行搜索,那他的結果是很多的,成千上萬的結果,那我在一個頁面里面,我不可能把成千上萬的結果展示在頁面里面,這樣子你頁面也hold不住,可能一個頁面幾千幾萬個行,你也受不了,所以搜索引擎他一般只會返回10幾20個結果給你,然后采用這種分頁的形式,所以他不會把全部結果給你,他要過濾一把,可能把一些匹配度比較高的,他放到前面去了,當然有些搜索引擎比較惡劣的,可能把一些廣告商的結果,排到前面去了,所以結果搜索引擎會做一些過濾的,這就是過濾的一個用處,過濾是關乎用戶體驗的一個過程

全文搜素有哪些實現(xiàn)的技術呢,對于JAVA來說,我們肯定不能從0開始建立起一個全文搜索引擎,對于一般的開發(fā)人員來說,是做不到的,實際上有一些開源的技術,我們可以直接拿來用,首先大家要介紹一下Lucene,Lucene它是基于JAVA的全文搜索的引擎,它是開源的一個引擎,那么這個引擎在業(yè)界的話,也是比較有名的,他用的也是比較多的,其次就是ElasticSearch,簡稱為ES,ES是基于Lucene之上的,ES搜索引擎系統(tǒng),它本身也是用了Lucene這個引擎,建立起來的,所以這個叫做站在巨人的肩膀上,ES在業(yè)界也是非常的有名的,這么一個全文搜索系統(tǒng),第三款產(chǎn)品叫做Solr,Solr是和ES同類型的一款產(chǎn)品,他也是一款全文檢索系統(tǒng),Lucene還只能成為全文搜索的引擎,就像一部車一樣,Lucene他是一個發(fā)動機,具體什么車,不同的車的牌子,可能用到的引擎,對于用戶來說我們買的是買個整車回來了,但是對于普通用戶來說我們不可能買一個發(fā)動機,先買個引擎回來,然后自己來組裝一把,顯然這種工作就比較低級,言外之意就是比較難,所以ES以及Solr,在市面上會流行起來的原因,用戶肯定是越好用越好了,開箱即用,拿來就用,這種是最好的,我們對ES會做非常多的一個講解,那么ES和Solr有沒有對比呢,其實是有一些對比的,他們優(yōu)缺點大概是這個樣子的,Solr在分布式管理當中,它是利用了Zookeeper分布式管理系統(tǒng),那么ES的話,他自身就帶有了分布式協(xié)調管理功能,所以在分布式管理上面,ES他自己有他自己的管理一套,Solr它是用了第三方的開源的產(chǎn)品,叫做Zookeeper來做分布式管理,Solr支持非常多的數(shù)據(jù)格式,比如像JSON,xml,CSV這種,而ES支持JSON,為什么支持JSON呢,他支持RESTFUL接口,接口主要是用JSON數(shù)據(jù)格式的,然后Solr提供的一個功能的話,是非常多的,而ES相對來說的話,他還是側重比較核心的功能,當然他也提供第三方的插件,來對齊進行一個擴展,然后Solr在傳統(tǒng)的應用中呢,他的表現(xiàn)要好于ES,但是在實時搜索應用中呢,效率要低于ES,所以這兩塊產(chǎn)品有好有劣的,我們并不能說,某個產(chǎn)品一定好于另一個產(chǎn)品,只是對于不同的應用場景,我們可以選擇更適合的應用場合,當然在目前的市場上來說的話,ES相對來說更火爆一點,在技術上來說的話,更加主流一點,互聯(lián)網(wǎng)企業(yè)用的更多一點,所以我們要把握主流的

?

總結

以上是生活随笔為你收集整理的全文搜索概述的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。