背景:
1、人工維護一個關鍵詞庫(目前不到10W個),關鍵詞特點:支持多國語言(英文居多),普遍長度較長(平均長度42)
2、給定一段文本,文本長度普遍在500-1000之間,文本無法確定語種也可能是多語種混雜,所以要所有關鍵字都匹配一遍
要求:
1、從文本中找出所有出現的關鍵詞,并給出關鍵詞所在位置(用于高亮顯示)
2、關鍵詞匹配時不區分大小寫
3、關鍵詞匹配時允許錯幾個字符(如關鍵詞長度在30-50之間的,允許2個字符匹配錯誤)
舉例說明:
關鍵詞:Caffeine,允許錯1個字符
可以匹配到文本中的如下內容:caffein、caffeina、caffeine等
uj5u.com熱心網友回復:
自己簡單寫了一個暴力匹配的方法,一個字符一個字符的遍歷文本,然后和關鍵詞的首字母進行匹配過濾,上面說的資料量,完整匹配時速度還可以接受,增加了允許錯幾個字符的處理后速度暴增到2-3分鐘,完全無法接受,求大神指點uj5u.com熱心網友回復:
弄個嵌入式資料庫就好
uj5u.com熱心網友回復:
不懂嵌入式資料庫跟這個需求有什么關系,請詳細說一下uj5u.com熱心網友回復:
建議樓主研究下自動狀態機。因為你這有允許錯誤的要求,需要進行一定的變形。uj5u.com熱心網友回復:
把詞拆分做關鍵字(索引, key), 如caffein 可以拆分成caf, fei, ein, 然后做索引匹配的時候同樣Caffeine分別搜索, caf, fei, ine
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/16567.html
標籤:數據結構與算法
下一篇:vulhub學習筆記-struts2 S2-057 Remote Code Execution Vulnerablity遠程代碼執行
