python有jieba結巴中文分詞庫可以使用,依詞性把文章中相關詞句分解,並以詞句詞性跟拼注音編碼存入資料庫或dict,搜尋時也是以分詞後進行搜尋
會這樣做的原因是......不要把想搜尋的人輸入的關鍵字當做完全正確輸入才能搜尋,錯字落字或加入不必要的感嘆句什麼的,都會影響正確性
或用商用的全文檢索來做吧
Golang有結巴
https://github.com/yanyiwu/gojieba
如果是英文的也能行嗎 謝謝 因為我們的網站基本就是英文的
英文沒有分詞的必要,因為每個字之間都有空白或標點,中文才需做分詞
但!還是最好能做成字典,讓你的用戶在輸入時可以做autocomplete做自動修正,因為打錯字而找不到關鍵的情況也蠻常發生的
明白, 就是說英文我們只需要看看用哪些算法來找出匹配的就行了嗎
至於演算法,這就交給全文檢索咯
好的, 我再研究看看全文搜索, 謝謝, 目前在看著這算法, 因為大學的時候沒好好努力, 算法的東西都還給老師了
https://www.jianshu.com/p/24895aca0459
https://www.golangprograms.com/golang-program-for-implementation-of-rabin-karp.html
jieba只是分詞用的,分詞完後基本上你得先篩選出這個詞重不重要(要不然你怎麼決定tag,總不可能所有分出來的詞都是tag吧?),TF-IDF就是這裡用的。
另外英文也要分詞,基本上TF-IDF用在英文更準,中文因為詞性不好分,加上斷詞不容易,所以不會很準。
然後全文搜尋可以看看Elasticsearch,這屆鐵人賽有贊助剛好很多教學文可以看。
建議叫使用者乖乖建tag比較實在。(茶
jieba可以把詞性分出來,還有預設權重,通常是愈常用的字詞權重愈大,關於結巴跟TF-IDF的資料,可參考前輩的鐵人賽文章
https://ithelp.ithome.com.tw/articles/10204535
我個人是有作一套智能音響raspberry版,用小鍵盤自製拼音輸入法(注音可對應),及麥克風語音在無螢幕界面(純CLI無GUI)下進行關鍵字輸入及搜尋隨身碟裡的萬首MP3/Youtube線上播放,分詞就顯的非常重要,中英文全文搜索真的很不一樣,碰壁久了還是要做下去