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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

全文搜索概述

發(fā)布時(shí)間:2024/4/13 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 全文搜索概述 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
搜索也稱之為檢索,大家對(duì)于搜索檢索并不陌生,比如我們?cè)跒g覽器里用百度,谷歌,對(duì)于某個(gè)問(wèn)題進(jìn)行搜素,又比如我們?cè)诠湔搲臅r(shí)候,我們想做某個(gè)技術(shù)相關(guān)的帖子,我們也要到搜索框里搜一搜,相關(guān)的結(jié)果看一看,這是一個(gè)搜素,還有就是我們?cè)诓僮麝P(guān)系型數(shù)據(jù)庫(kù)的時(shí)候,我們其實(shí)查詢數(shù)據(jù)結(jié)果的話,他本身也是一個(gè)搜索的過(guò)程,我們根據(jù)我們的SQL語(yǔ)句,數(shù)據(jù)庫(kù)會(huì)執(zhí)行搜索,把匹配到的一些結(jié)果,返回給用戶,這也是一個(gè)搜索,以上提到的這些搜索,跟我們今天講的全文搜索,他有什么聯(lián)系呢,首先會(huì)對(duì)概念進(jìn)行一個(gè)介紹,對(duì)ElasticSearch做一個(gè)簡(jiǎn)介,這款產(chǎn)品的核心概念也會(huì)做一個(gè)介紹,同時(shí)ES對(duì)Spring Boot做一個(gè)繼承,應(yīng)用做一個(gè)講解,可以掌握這門技術(shù),首先我們來(lái)談一談全文搜索的概念,首先我們講一講數(shù)據(jù)結(jié)構(gòu),數(shù)據(jù)結(jié)構(gòu)有哪些類型的數(shù)據(jù)結(jié)構(gòu)呢,首先是結(jié)構(gòu)化的數(shù)據(jù)結(jié)構(gòu),這個(gè)是比較好理解的,指具有固定格式,或者有限長(zhǎng)度的一些數(shù)據(jù)的,比如像數(shù)據(jù)庫(kù)元數(shù)據(jù)等等,比如我們?cè)谠O(shè)計(jì)數(shù)據(jù)庫(kù)表結(jié)構(gòu)的時(shí)候,我們?cè)谠黾幽硞€(gè)字段的時(shí)候,需要指定字段的類型,那么類型就是格式的意思,我們還要指定他的長(zhǎng)度,所以結(jié)構(gòu)化的數(shù)據(jù)特點(diǎn)就是這樣的,具有固定格式的,以及有限長(zhǎng)度的一個(gè)數(shù)據(jù),這就是一個(gè)結(jié)構(gòu)化的數(shù)據(jù),相對(duì)結(jié)構(gòu)化的數(shù)據(jù)來(lái)說(shuō),就是非結(jié)構(gòu)化的數(shù)據(jù),那么非結(jié)構(gòu)化的數(shù)據(jù),他就是指不定長(zhǎng)的,或者沒(méi)有固定格式的數(shù)據(jù),比如像郵件啊,還有各種文檔等等,word,文本文檔等等,這些都是非結(jié)構(gòu)化的數(shù)據(jù),非結(jié)構(gòu)化的數(shù)據(jù)的話,我們?cè)趺磥?lái)進(jìn)行一個(gè)搜索,大家如果用過(guò)數(shù)據(jù)庫(kù),關(guān)系型數(shù)據(jù)庫(kù),對(duì)于結(jié)構(gòu)化數(shù)據(jù)查詢的話,應(yīng)該是非常熟悉的,那么非結(jié)構(gòu)化的數(shù)據(jù)我們?cè)趺催M(jìn)行搜索呢

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

全文搜索的概念就比較好理解了,其實(shí)就是在一個(gè)文件中,文件中的所有文本,我們要搜索的項(xiàng),來(lái)進(jìn)行匹配的一種檢索方式,這就是全文檢索

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

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

?

總結(jié)

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

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