lucene拼写检查模块

Lucene是Apache发布的开源搜索引擎开发工具包,不仅提供了核心的搜索功能,还提供了许多其他功能插件,例如:拼写检查功能模块。

搜索拼写检查模块实现类在lucene-suggest-x.xx.x.jar包中,package名为org.apache.lucene.search.spell,其中拼写检查功能的核心实现有3个类,

分别为:SpellChecker、DirectSpellChecker、WordBreakSpellChecker;

3个类提供了不同的拼写检查方式,区别如下:

SpellChecker:提供了原始的拼写检查功能,在拼写检查前需要重新建立索引(根据txt字典文件建立索引或者已有索引文件的某个字段建立索引),然后才可以进行拼写检查;

SpellChecker源码分析查看如下网站:http://www.tuicool.com/articles/naIBjm

DirectSpellChecker:提供了改进的拼写检查功能,可以直接利用已有索引文件进行拼写检查,不需要重新建立索引(solr系统默认采用此种方式进行拼写检查);

WordBreakSpellChecker:也不需要重新建索引,可以利用已有索引进行拼写检查。

SpellChecker使用:

建立索引有三种方式:

PlainTextDictionary:用txt文件初始化索引

LuceneDictionary:用现有索引的某一个字段初始化索引

HighFrequencyDictionary:用现有索引的某个字段初始化索引,但每个索引条目必须满足一定的出现率

 1 //新索引目录
 2 String spellIndexPath = “D:\\newPath”;
 3 //已有索引目录
 4 String oriIndexPath = "D:\\oriPath";
 5 //字典文件
 6 String dicFilePath = “D:\\txt\\dic.txt”;
 7
 8 //目录
 9 Directory directory = FSDirectory.open((new File(spellIndexPath)).toPath());
10
11 SpellChecker spellChecker = new SpellChecker(directory);
12
13 //以下几步用来初始化索引
14 IndexReader reader = DirectoryReader.open(FSDirectory.open((new File(oriIndexPath)).toPath()));
15 //利用已有索引
16 Dictionary dictionary = new LuceneDictionary(reader, fieldName);
17 //或者利用txt字典文件
18 //Dictionary dictionary = new PlainTextDictionary((new File(dicFilePath)).toPath());
19 IndexWriterConfig config = new IndexWriterConfig(new StandardAnalyzer());
20 spellChecker.indexDictionary(dictionary, config, true);
21
22 String queryWord = "beijink";
23 int numSug = 10;
24 //拼写检查
25 String[] suggestions = spellChecker.suggestSimilar(queryWord, numSug);
26
27 reader.close();
28 spellChecker.close();
29 directory.close();

DirectSpellChecker使用:

1 DirectSpellChecker checker = new DirectSpellChecker();
2 String readerPath = "D:\\path";
3 IndexReader reader = DirectoryReader.open(FSDirectory.open(
4                     (new File(readerPath)).toPath()));
5 Term term = new Term("fieldname", "querytext");
6 int numSug = 10;
7 SuggestWord[] suggestions = checker.suggestSimilar(term, numSug, reader);
时间: 2024-10-20 18:20:05

lucene拼写检查模块的相关文章

搜索拼写检查

一.拼写检查的目的 拼写检查功能,能在搜索时,提供一个较好用户体验,所以,主流的搜索引擎都有这个功能. 那么什么是拼写检查,其实很好理解,就是你输入的搜索词,可能是你输错了,也有可能在它的检索库里面根本不存在这个词,但是这时候它能给你返回,相似或相近的结果来帮助你校正. 举个例子,假如你在百度里面输入在在线电瓶,可能它的索引库里面就没有,但是它有可能返回在线电影,在线电视,在线观看等等一些词,这些,就用到拼写检查的功能了.如下图: 二.搜索拼写检查现状 solr搜索系统提供了基本的关键词提示功能

solr拼写检查配置

拼写检查功能,能在搜索时,提供一个较好用户体验,所以,主流的搜索引擎都有这个功能. 那么什么是拼写检查,其实很好理解,就是你输入的搜索词,可能是你输错了,也有可能在它的检索库里面根本不存在这个词,但是这时候它能给你返回,相似或相近的结果来帮助你校正.举个例子,假如你在百度里面输入在在线电瓶,可能它的索引库里面就没有,但是它有可能返回在线电影,在线电视,在线观看等等一些词,这些,就用到拼写检查的功能了. solr是一个基于lucene开发接口实现的成熟的搜索系统,通过不同的控件(Component

solr入门之solr的拼写检查功能的应用级别尝试

今天主要是收集了些拼写检查方面的资料和 尝试使用一下拼写检查的功能--=遇到了不少问题 拼写检查的四种配置目前我只算是成功了半个吧 --------------------------------- 拼写检查功能,能在搜索时,提供一个较好用户体验,所以,主流的搜索引擎都有这个功能.在这之前,笔者先简单的说一下什么是拼写检查,其实很好理解,就是你输入的搜索词,可能是你输错了,也有可能在它的检索库里面根本不存在这个词,但是这时候它能给你返回,相似或相近的结果来帮助你校正. 举个例子,假如你在百度里面

贝叶斯推断及其互联网应用(三):拼写检查

(这个系列的第一部分介绍了贝叶斯定理,第二部分介绍了如何过滤垃圾邮件,今天是第三部分.) 使用Google的时候,如果你拼错一个单词,它会提醒你正确的拼法. 比如,你不小心输入了seperate. Google告诉你,这个词是不存在的,正确的拼法是separate. 这就叫做"拼写检查"(spelling corrector).有好几种方法可以实现这个功能,Google使用的是基于贝叶斯推断的统计学方法.这种方法的特点就是快,很短的时间内处理大量文本,并且有很高的精确度(90%以上).

solr特点四: SpellCheck(拼写检查)

接下来,我将介绍如何向应用程序添加 “您是不是要找……”(拼写检查). 提供拼写建议 Lucene 和 Solr 很久以前就开始提供拼写检查功能了,但直到添加了 SearchComponent架构之后,这些功能才可以无缝使用.现在您可以输入一个查询,让它不仅返回查询结果,并且为查询词语提供拼写建议(如果存在的话).然后可以利用这些建议像 Google 那样显示 “您是不是要找……”,或者像 Yahoo! 那样显示 “请尝试……”. 集成拼写检查的妙处在于它能够(而且必须)根据索引中的标记给出建议

5-niginx-健康检查模块

1,  nginx有一个自带的健康检查模块, 过于丑陋... 只需要在 nginx.conf下的http中的server配置如下即可 location /basic_status { stub_status on; } 然后重启nginx, 使用脚本: service nginx reload 通过浏览器可访问 2, tengine也有一个健康检查模块, 比较强大 先在server中配置 #使用tengine的健康检查 location /status { check_status; } # 有

关闭Mycelipse的拼写检查

关闭拼写检查的方法如下: 打开工具栏的window下的preferences 依次展开General->Editors->TextEditors,找到里边的Spelling选项,把前面的勾去掉

取消eclipse/myeclipse的拼写检查

大家可能会被拼写错误提示所烦扰.只要简单几步即可取消拼写检查 window -> Preferences - >General -> Editors -> Spelling -> Enable spell checking  把钩去掉即可 取消eclipse/myeclipse的拼写检查,布布扣,bubuko.com

Tengine新增健康检查模块

总结 2.tengine的状态监控 Tengine的状态监控有两种 这里演示一个健康检查模块功能 配置一个status的location location /status { check_status; } 在upstream配置如下 check interval=3000 rise=2 fall=5 timeout=1000 type=http; check_http_send "HEAD / HTTP/1.0\r\n\r\n"; check_http_expect_alive ht