java实现Google和Baidu的“您是不是要找”功能

背景 :

在使用搜索引擎和电商的搜索功能时,大家一定遇到过这样的情景:我想搜索博客园,可不小心输成博客员了,不用担心搜不到你想要的结果,因为建立在大数据上的搜索引擎会帮你自动纠错,就这个例子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
// 查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/
int suggestionNumber = 1;

//获取建议的关键字
String[] suggestions = sp.suggestSimilar(search, suggestionNumber);

//显示结果
System.out.println("搜索:" + search);

for (String word : suggestions) {
    System.out.println("你要找的是不是:" + word);
}

注:这之前你需要有个语料库,我这里是个存放正确视频名称的文件,格式如下:

红颜血泪
冰上火一般的激情
在敌之手
驰风竞艇王第二部
钓金龟
潇湘路一号
戏里戏外第二季
草原狼爵士乐
拯救大兵瑞恩

好了,接下来就直接运行吧,见下图:

完整代码和字典在这里(限于工作原因,字典只保留部分电影名称,你可以用你自己的语料库)

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索搜索
, 博客
, dictionary
, 电商
, 自动
, 结果
, baidu搜索功能
spellcheck
google docs 实现、google离线地图实现、google 首页游戏 实现、google镜像如何实现、google adsense 实现,以便于您获取更多的相关知识。

时间: 2024-09-27 23:18:17

java实现Google和Baidu的“您是不是要找”功能的相关文章

用Java实现Google的“您是不是要找”功能

引言 很多人在使用搜索引擎的时候,会出于各种原因,拼错想要搜索的关键字,比如键盘有问题(某个按 键坏了).不熟悉国际名称(弗洛伊德的全名 Sigmund Freud).不小心写错字母(Sinpsons)或多写了 一个字母(Frusciaante).许多用户都很熟悉Google搜索引擎携带的"您是不是要找"功能.这个功能 在检测到搜索关键字有可能拼写错了的时候会提供一些备选建议. 文本搜索在电子商务网站等各类应用中都很常见.电子商务网站通常提供文本搜索功能,用户因此可 以自行查找符合关键

为什么我在google和baidu上找到的java培训机构,他们的主页都是用asp写的呢?

问题描述 为什么我在google和baidu上找到的java培训机构,他们的主页都是用asp写的呢?如果是老的主页也就算了,就算是新改版的也是asp写的.是这些号称教java的机构更不不会用jsp还是jsp是主流web开发是一个谎言骗局?国内培训JAVA的机构非常之多,把java炒作的热火朝天.java好的,作web网站的必然之器具,什么开源啊,MVC啊,JavaBeans啊,Servlets啊,Struts,Spring,Hibernate,Ibatis,免费啊,标准啊,主流啊.嗯,很好很强大

.Net 文本框实现内容提示(仿Google、Baidu)

原文:.Net 文本框实现内容提示(仿Google.Baidu)   1.Demo下载: 文本框实现内容提示(仿Google.Baidu).rar 2.创建数据库.表(我用的sqlserver2008数据库) 1 CREATE TABLE Ceshi 2 ( 3 id VARCHAR(50) PRIMARY KEY NOT NULL, 4 cname VARCHAR(30) 5 ) 6 GO 7 INSERT INTO Ceshi 8 SELECT NEWID(),'jack1' UNION 9

寻找Google和Baidu的收录规律

&http://www.aliyun.com/zixun/aggregation/37954.html">nbsp;   Google 秉持着开发"完美的搜索引擎"的信念,在业界独树一帜.所谓完美的搜索引擎,就如公司创始人之一 Larry Page 所定义的那样,可以"确解用户之意,切返用户之需".为了实现这一目标,Google 坚持不懈地追求创新,而不受现有模型的限制.因此,Google 开发了自己的服务基础结构和具有突破性的 PageRa

.Net 文本框实现内容提示的实例代码(仿Google、Baidu)_实用技巧

1.Demo下载: 文本框实现内容提示(仿Google.Baidu).rar 2.创建数据库.表(我用的sqlserver2008数据库) 复制代码 代码如下: CREATE TABLE Ceshi(   id VARCHAR(50) PRIMARY KEY NOT NULL,   cname VARCHAR(30) )GO INSERT INTO CeshiSELECT NEWID(),'jack1' UNIONSELECT NEWID(),'jack2' UNIONSELECT NEWID(

观Google恶搞:Google给BAIDU下战书

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断淘宝客 站长团购 云主机 技术大厅 今天看了Google恶搞有些反胃的感觉.Google这番恶搞的目的何在,何以如此的恶毒?这又能代表了Google的什么意思,对用户又有何影响呢?从Google恶搞片我们可以看到大量的Google的员工和公司内部场景,从此可以肯定的说,此片即使不是GOOGLE高层决定拍摄也是授意拍摄的.否则对在上班期间这么多员工做这么"无聊&

短网链接-用java后台处理手机端长网址变短网址功能的实现

问题描述 用java后台处理手机端长网址变短网址功能的实现 1)情景: 用户在手机上浏览某个网页的时候,觉得不错,想分享给好友,点击分享后,对应的网址填充到了文本框里面,但是分享的内容字数有限制,如果分享的网址过长,那么用户可能就写不了几个字了,这时候需要我们实现一个功能,将这个长的地址转化为短网址,再进行分享. 2)要求:在后台用java写一个接口,来处理手机端要分享的长地址,实现网易 126.am的短地址功能,也就是网易api中长地址变短地址的功能 这个接口该怎么写呢? 网易变短网链接网址:

求大家帮帮小白吧-求在java这行业的大神帮我实现一个功能

问题描述 求在java这行业的大神帮我实现一个功能 一个会议室申请的页面功能,客户要填写会议开始时间与结束时间,然后选择会议室房间名称, 在这个时候,我该怎么去判断客户在这个申请时间与结束时间内有无其他客户在这个时间段有申请的记录,如果有,则在申请的客户不能申请这个时间段,和会议室房间名称,求大神给我一点帮助, 在此谢谢大家了,我纯属小白,在网上看了两个月视频教学,真心的没思路,现在还在努力学java相关的书籍视频教学.求大家帮帮忙. 解决方案 判断表中对应 的房间号在这段时间能有没有在用:sq

java人机五子棋无措,debug时出现找不到源是为什么

问题描述 java人机五子棋无措,debug时出现找不到源是为什么 java人机五子棋无措,debug时出现找不到源是为什么 java人机五子棋无措,debug时出现找不到源是为什么 java人机五子棋无措,debug时出现找不到源是为什么 java人机五子棋无措,debug时出现找不到源是为什么 解决方案 这是运行是的画面. 解决方案二: 单步运行时,突然出现这么个类附图 解决方案三: 这是第一个程序啊...快一天了,,,热情都快被磨完了 解决方案四: 这是第一个程序啊...快一天了,,,热情