資料庫能做搜尋嗎?用資料庫做搜尋的優點和缺點有哪些?

時間 2021-05-30 19:54:16

1樓:陳廣勝

在網際網路早期,LAMP剛開始大紅大紫的那個時代,許多站點的搜尋就是用資料庫的做的。就是簡單地在要搜尋的字段上加個倒排索引。這麼做的優點是維護和開發簡單,了解點SQL就可以了。

不過隨著資料量越來越大,這種做法顯得不是那麼高效。搜尋對於大多數應用來說,不太需要關係型資料庫的一些功能,如事務處理,資料規範化;另外,關係型資料庫的擴充套件能力有限,而通用的全網搜尋每時每刻都在產生新資料。像ElasticSearch這種專門的搜尋引擎,是乙個更好的選擇。

2樓:雲師兄

能一、資料庫中建立索引的優點

1、建立唯一性索引,保證資料庫表中每一行資料的唯一性。

2、加快資料的檢索速度,這也是建立索引的最主要的原因。

3、減少磁碟IO(向字典一樣可以直接定位)。

4、通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。

5、加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。

二、資料庫中建立索引的缺點

1、建立索引和維護索引要耗費時間,這種時間隨著資料量的增加而增加。

2、索引需要占用物理空間,特別是聚集索引,需要較大的空間。

3樓:建議永豐

如果不用任何現成的元件,從頭寫搜尋引擎,需要實現儲存系統,讀寫鎖系統(沒有acid要求那麼高),網路伺服器、分詞和糾錯系統、查詢語言解析器,看情況要支援join、視窗函式、重做日誌和複製分發、acid、分片和集群一致性、查詢優化器、自然語言語義分析器。其實超過一半的時間在做資料庫。

4樓:程式設計師卡卡西

資料庫本來就就是儲存和搜尋的結合體,做搜尋的瓶頸在於磁碟IO,所有出現了nosql資料庫,基於記憶體快速檢索,對於沒有嚴格的資料模型的資料檢索,ES是適合的技術產品

5樓:563501734

資料庫技術的核心就是資料檢索、保證資料的一致性和安全性(側重於系統軟硬體意外時保證資料不丟失)。

優點:就是資料庫提供的核心功能,不需要使用者自己關心資料的儲存和讀取簡化開發過程。

缺點:需要另外學習資料庫知識;對小型程式而言資料庫軟體本身體積龐大,但有Sqlite可選;其他的想不到。

6樓:

我不知道現在是不是有更好的全文檢索方式,不過 10 多年前我幹過。建乙個分詞表、乙個 m:n 的倒排索引表,然後自行實現了左向最大化匹配分詞演算法。

首先,把要記錄的內容進行分詞,將內容 ID、分詞 ID 和詞頻記錄到索引表;然後,當外部查詢時,對傳入的短語進行分詞,利用分詞 ID 字段 IN (查詢的分詞) 來獲取匹配的內容,外部的模糊搜尋變成了精確查詢;比較麻煩的是計算匹配度排序。當時用 perl 寫著玩,沒深入研究,之後涉及面向一般使用者的搜尋都用 Sphinx 和 Lucene 了。

此後我也不在關聯式資料庫上搞這種名堂了,但是偶爾後台也要搜一下,能搜到便可以,也沒複雜要求,就採用人肉分詞加 Like 語句的方式,如搜尋語句:張三化工博士,使用者人肉給短語用空格切成詞,程式再將其轉化為 content LIKE '%張三%' AND content LIKE '%化工%' AND content LIKE '%博士%' 這種 SQL 語句。需注意:

防注入、轉義等——即便是內部員工用。

人肉分詞搜尋 :P

7樓:Xpecya

能。優點:簡單

缺點:麻煩

這裡的簡單是指,你不需要學習其他的搜尋中介軟體,也不需要考慮什麼資料更新的時候把資料庫和中介軟體輪流做更新等等這些問題。從架構上講,少了一環,就減少了複雜度。

麻煩是指,如果要實現乙個複雜的搜尋,用資料庫SQL語句來寫會很繁瑣,有時候為了效能優化會非常繁瑣,語句的維護也會很困難。

綜合來說,不是不能,但不推薦這麼做

雲資料庫對比傳統資料庫好在哪?

這是哪個雲廠商又來搞運營話題了嗎?凡事有利必有弊,需要根據自己的情況選擇合適自己的。正式一點來說,雲資料庫省掉了機房 機器 安裝 調優 運維等等下幾路的基礎工作,外包給別人了,而且擴容 縮容之類的工作也都可能外包了。可是,這個外包並不總是比自己靠譜。而且還有服務響應速度,資料安全保密,是否跟你有競爭...

資料庫的選擇?

破緊逼 推薦學習oracle,因為sqlserver還是做了比較多的封裝,但是oracle會比較複雜,概念也比較多,能學到比較多的資料庫細節,之後學其他資料庫就游刃有餘 postgres django,在搬瓦工買個vps,3.99刀用一年。資料庫遷移沒什麼難度,django提供了 URL routi...

Arcgis建立的個人資料庫和檔案資料庫有什麼區別呢?

xomap Personal GDB 檔案實質是Access庫,檔案大小最大2G。File GDB則沒有檔案大小上線,且可以跨平台。 補充,gdb可以使用gdal驅動中的filegdb api進行簡單讀寫 相同 均為GeoDatabase資料模型的實現,均為物件導向的地理資料庫,不開源 不同 個人地...