Database 板


LINE

資料庫名稱: SQLite 資料庫版本: 3.8.6 作業平台: Gentoo Linux 問題描述: 最近在用 SQLite 的 fts(full-text search) 實作簡單的 search function, 搜尋主要內容是數字、中文和英文。 fts 的資料可能如下: pacakgeId |title ------------------------------------- 1 |"horse 馬" ------------------------------------- 2 |"cute dogs 超級可愛的狗狗" ------------------------------------- 3 |"Roman 羅馬" ------------------------------------- 4 |"Purin dog 布丁狗" 其實還會有其他國的 title(像是日、韓、德等), 不過目前使用者主要是使用中、英文。 目前嘗試內建的 tokenizer,其中 porter 可以對英文做 stemming,(像是搜尋「dog」可以找到 2, 4) 但是中文就只會把整句當成一個 token,搜尋時必須搜尋整句或是開頭+wildcard 纔可以。 icu 可以對中英文或其他國語言分詞,但是有兩個問題 1. 沒有辦法像 porter 做 stemming,所以搜尋「dog」只會出現 4 2. 分詞太「聰明」,會把「羅馬」辨認成一個 token。 所以當搜尋「馬」時只會出現 1,沒有 3 簡單來說,我希望 1. 英文 stemming,可以搜尋 dog 就找到 2, 4 2. 中文 unigram,搜尋「馬」時找到 1, 3 3. 搜尋「羅馬」時找到「羅 AND 馬」(ex: 3,兩字分開也沒關係),「羅 馬」時找「羅 OR 馬」到 1, 3 (第三點似乎是內建的行為?不太確定。目前 icu 可以達到。例如:「可愛狗」可以找到 2,不會找到4) 4. (option)其他語言按照 icu 來分詞。 我對 custom tokenizer 並不是很熟,文件和程式碼看起來都不太友善XD 自己從頭學習+實作是下下策,希望可以先找到有經驗的前輩,看有沒有類似功能的實作或是其他意見。 PS. 我也有在尋找 database 以外的解決辦法,譬如把資料轉移到 Lucene 上。 相關提案暫時還在摸索,所以這裡還是以可以用現有 SQLite 解決的方法為主。 -- 最後我發現是 ICU 的 word boundary 演算法讓 break iterator 會判斷多個漢字為一個單字, 而改中文 word boundary analysis 演算法可能沒有比較簡單 加上除非把 column 分成不同 virtual table 不然無法每個 column 用不同的 tokenizer 所以我最後是把 CJK 字元之間都加上空格(實作上不是,但大概是這個意思)然後用 porter 這樣除了第四點以外都 OK 了 還有第三點是我的誤會,他的每個 token 本來就是 AND 的關係,所以「羅 馬」也是找到「羅 AND 馬」。 --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.244.41
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Database/M.1415315399.A.97C.html ※ 編輯: carylorrk (1.34.244.41), 11/07/2014 09:06:02 ※ 編輯: carylorrk (1.34.244.41), 11/10/2014 04:23:58







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP