程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java實現Google和Baidu的“您是不是要找”功能

java實現Google和Baidu的“您是不是要找”功能

編輯:關於JAVA

背景 :

在使用搜索引擎和電商的搜索功能時,大家一定遇到過這樣的情景:我想搜索博客園,可不小心輸成博客員了,不用擔心搜不到你想要的結果,因為建立在大數據上的搜索引擎會幫你自動糾錯,就這個例子Google和Baidu返回給我的分別是:

顯示以下查詢字詞的結果: 博客園 和  您要找的是不是: 博客園 ,他們都做到了自動糾錯,關於自動糾錯我之前也寫過一篇陋文,當時是自己實現的N-Gram模型,但是效果不是太好,主要是針對不同的語料庫算法的精確度是不一樣的,我想換個算法試試看,目前主流的計算串間的距離(相反的,你也可以理解為相似度)是Levenshtein,當要實現時,發現lucene已經做了這個事,那咱就站在巨人的肩膀上成長吧。

引用包:

lucene-core-3.1.0.jar + lucene-spellchecker-3.1.0.jar,你可以在這裡得到

使用示例:

在類SpellCorrector的main方法中加入以下代碼

//創建目錄
File dict = new File("");
Directory directory = FSDirectory.open(dict);
   
//實例化拼寫檢查器 
SpellChecker sp = new SpellChecker(directory); 
   
//創建詞典
File dictionary = new File(SpellCorrecter.class.getResource("dictionary.txt").getFile());
   
//對詞典進行索引
sp.indexDictionary(new PlainTextDictionary(dictionary));
   
//有錯別字的搜索
String search = "非常勿擾";
    
   
//建議個數,這裡我只想要最接近的那一個,你可以設置成別的數字,如3
// 查看本欄目
紅顏血淚
冰上火一般的激情
在敵之手
馳風競艇王第二部
釣金龜
潇湘路一號
戲裡戲外第二季
草原狼爵士樂
拯救大兵瑞恩

好了,接下來就直接運行吧,見下圖:

完整代碼和字典在這裡(限於工作原因,字典只保留部分電影名稱,你可以用你自己的語料庫)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved