數據庫分詞查詢的優缺點以及英文和中文各自的分詞方法(一)


1.為什么需要數據庫分詞查詢

 假設有一個數據庫表,表中有一個title字段
table1 假如有300萬的數據
id為主鍵,title也設置了索引
id title
1 這是計算機,和計算機相關,電腦相關
2 這個標題是數據庫,與專利數據庫有關系
3 這個標題是與淘寶user數據庫
... ...................................................

假如我們需要通過title中的某些字段去進行查詢,如果不分詞查詢,那么這樣的缺點如下
  1. 查詢速度上的問題,如果我們 想查詢title中 有 數據庫 的字段的所有內容
我們只能用   select * from table1 where title like '%數據庫%'
         注意: like %xxx% 這樣查詢,將會是沒有索引的查詢,查詢的速度會非常的慢,40萬的數據,這樣查詢需要的時間是用 = 查詢的幾千倍
使用like'%%' 速度非常慢,在需要大量查詢的時候,性能上會出現很大的問題
           2. 查詢的准確性問題,假如我們想查詢有 專利數據庫 的字段,但是,我們如果打錯了,打成了查詢 '專利的數據庫',多了一個'的'字,
    查詢的sql 語句為 select * from table1 where title like '專利的數據庫' 
  這樣,我們是查詢不到id=2的這一條數據的
如果使用分詞查詢,上述問題將會得到解決
我們將關鍵字進行分詞,建立關鍵字與id的關系,同時建立索引
比如我們將title進行分詞,得到如下的表(注:下表我只列出id=2的分詞部分)
keywordsearch1表 id為主鍵,keyword設置索引
id
keyword
......
xxxxxxx
2
標題
2
數據庫
2
專利
2
關系
.......
xxxxxxxxx
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去主表中查詢相應的數據,這樣,就保證了我們能夠得到我們想要的數據了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM