資料庫分詞查詢的優缺點以及英文和中文各自的分詞方法(一)
阿新 • • 發佈:2019-02-18
1.為什麼需要資料庫分詞查詢
假設有一個數據庫表,表中有一個title欄位 table1 假如有300萬的資料 id為主鍵,title也設定了索引
假如我們需要通過title中的某些欄位去進行查詢,如果不分詞查詢,那麼這樣的缺點如下
注意: like %xxx% 這樣查詢,將會是沒有索引的查詢,查詢的速度會非常的慢,40萬的資料,這樣查詢需要的時間是用 = 查詢的幾千倍
使用like'%%' 速度非常慢,在需要大量查詢的時候,效能上會出現很大的問題
2. 查詢的準確性問題,假如我們想查詢有 專利資料庫 的欄位,但是,我們如果打錯了,打成了查詢 '專利的資料庫',多了一個'的'字,
查詢的sql 語句為 select * from table1 where title like '專利的資料庫'
這樣,我們是查詢不到id=2的這一條資料的
如果使用分詞查詢,上述問題將會得到解決
我們將關鍵字進行分詞,建立關鍵字與id的關係,同時建立索引
比如我們將title進行分詞,得到如下的表(注:下表我只列出id=2的分詞部分)
keywordsearch1表 id為主鍵,keyword設定索引
1. 我們如果要查詢tutle中有資料庫的。可以直接用
select * from table where id in(select id from keywordsearch1 where keyword='資料庫')
或者程式中,先在分詞表中查詢出id,再用一個for迴圈,迴圈select * from table where id =xxx
這樣一來,查詢都是有索引的,速度會非常的迅速.速度問題解決了
2. 對於準確度問題,比如搜尋
專利的資料庫
程式會先和分詞的方法一樣,將其分成
專利、資料庫 我們查詢的時候
就分別keywordsearch1表去查詢這兩個對應的id,取得他們的交集,然後再根據id去主表中查詢相應的資料,這樣,就保證了我們能夠得到我們想要的資料了
更多內容,看下一章節
假設有一個數據庫表,表中有一個title欄位 table1 假如有300萬的資料 id為主鍵,title也設定了索引
id | title |
1 | 這是計算機,和計算機相關,電腦相關 |
2 | 這個標題是資料庫,與專利資料庫有關係 |
3 | 這個標題是與淘寶user資料庫 |
... | ................................................... |
- 查詢速度上的問題,如果我們 想查詢title中 有 資料庫 的欄位的所有內容
id | keyword |
...... | xxxxxxx |
2 | 標題 |
2 | 資料庫 |
2 | 專利 |
2 | 關係 |
....... | xxxxxxxxx |