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:用现有索引的某个字段初始化索引,但每个索引条目必须满足一定的出现率
//新索引目录
String spellIndexPath = “D:\\newPath”;
//已有索引目录
String oriIndexPath = "D:\\oriPath";
//字典文件
String dicFilePath = “D:\\txt\\dic.txt”; //目录
Directory directory = FSDirectory.open((new File(spellIndexPath)).toPath()); SpellChecker spellChecker = new SpellChecker(directory); //以下几步用来初始化索引
IndexReader reader = DirectoryReader.open(FSDirectory.open((new File(oriIndexPath)).toPath()));
//利用已有索引
Dictionary dictionary = new LuceneDictionary(reader, fieldName);
//或者利用txt字典文件
//Dictionary dictionary = new PlainTextDictionary((new File(dicFilePath)).toPath());
IndexWriterConfig config = new IndexWriterConfig(new StandardAnalyzer());
spellChecker.indexDictionary(dictionary, config, true); String queryWord = "beijink";
int numSug = 10;
//拼写检查
String[] suggestions = spellChecker.suggestSimilar(queryWord, numSug); reader.close();
spellChecker.close();
directory.close();
DirectSpellChecker使用:
DirectSpellChecker checker = new DirectSpellChecker();
String readerPath = "D:\\path";
IndexReader reader = DirectoryReader.open(FSDirectory.open(
(new File(readerPath)).toPath()));
Term term = new Term("fieldname", "querytext");
int numSug = 10;
SuggestWord[] suggestions = checker.suggestSimilar(term, numSug, reader);
lucene拼写检查模块的更多相关文章
- solr拼写检查配置
拼写检查功能,能在搜索时,提供一个较好用户体验,所以,主流的搜索引擎都有这个功能. 那么什么是拼写检查,其实很好理解,就是你输入的搜索词,可能是你输错了,也有可能在它的检索库里面根本不存在这个词,但是 ...
- 1.7.7 Spell Checking -拼写检查
1. SpellCheck SpellCheck组件设计的目的是基于其他,相似,terms来提供内联查询建议.这些建议的依据可以是solr字段中的terms,外部可以创建文本文件, 或者其实lucen ...
- solr拼写检查代码逻辑
自定义的solr搜索系统作为web应用发布到tomcat后,运行过程中其搜索代码逻辑如下: 用户solr搜索应用发送搜索请求URL,solr应用的org.apache.solr.servlet.Sol ...
- Emacs中的拼写检查
无论是在Emacs中写英文日记(diary).Org mode笔记,还是撰写程序的注释和文档,拼写检查都是一项提高工作效率.保证成果品质的必不可缺的工具.拼写检查对于常见的文字处理软件(如Word.L ...
- 关闭Pycharm拼写检查
转载: https://blog.csdn.net/u013088062/article/details/50001189 Pycharm作为一款优秀的PythonIDE,唯一让我觉得不安的就是它的拼 ...
- solr特点四: SpellCheck(拼写检查)
接下来,我将介绍如何向应用程序添加 “您是不是要找……”(拼写检查). 提供拼写建议 Lucene 和 Solr 很久以前就开始提供拼写检查功能了,但直到添加了 SearchComponent架构之后 ...
- solr入门之solr的拼写检查功能的应用级别尝试
今天主要是收集了些拼写检查方面的资料和 尝试使用一下拼写检查的功能--=遇到了不少问题 拼写检查的四种配置眼下我仅仅算是成功了半个吧 --------------------------------- ...
- 21行python代码实现拼写检查器
引入 大家在使用谷歌或者百度搜索时,输入搜索内容时,谷歌总是能提供很好的拼写检查,比方你输入 speling,谷歌会立即返回 spelling. 前几天,看到http://norvig.com/spe ...
- 如何在Word中排出漂亮的代码,去除回车符,去除拼写检查
这位博主写到很到位,这里补充一下在VBA里用模块的部分. https://blog.csdn.net/code4101/article/details/41802715 1.放代码的方式是贴纯文本. ...
随机推荐
- Simpsons’ Hidden Talents - HDU 2594(求相同的前缀后缀)
题目大意:给你两个字符串,找出一个最大的子串,这个子串要是前面串的前缀并且是后面串的后缀........... 分析:next的简单运用吧,可以把两个串进行合并,中间加一个不能被匹配的字符,然后求 ...
- 详解udev
如果你使用Linux比较长时间了,那你就知道,在对待设备文件这块,Linux改变了几次策略.在Linux早期,设备文件仅仅是是一些带有适当的属性集的普通文件,它由mknod命令创建,文件存放在/dev ...
- Appium移动自动化测试(二)--安装Android开发环境(转)
Appium移动自动化测试(二)--安装Android开发环境 2015-06-04 17:30 by 虫师, 35299 阅读, 23 评论, 收藏, 编辑 继续Appium环境的搭建. 第二节 ...
- kafka Disks and Filesystem(磁盘和文件系统)
转载请注明来源地址:http://www.cnblogs.com/dongxiao-yang/p/5206631.html We recommend using multiple drives to ...
- android编程中setLayoutParams方法设置
第一篇 private LinearLayout generateHeadOfControl() { LinearLayout LayoutHead = createLayout(LinearLayo ...
- NDN路由--OSPFN安装与配置
现在的IP网络的问题已经暴露的很多了,各种改进的网络架构与设想非常多,但其中以基于内容为中心的网络发展最为迅速,其中,NDN的架构最为完整,代码也比较成熟.OSPFN是基于CCNX的,所以之前要安装C ...
- poj2239 Selecting Courses --- 二分图最大匹配
匈牙利算法模板题 有n门课程,每门课程可能有不同一时候间,不同一时候间的课程等价. 问不冲突的情况下最多能选多少门课. 建立二分图,一边顶点表示不同课程,还有一边表示课程的时间(hash一下). #i ...
- BeautifulSoup在Windows下安装(running 2to3)
在windows下安装beautifulsoup经常会出现说是在python3下无法运行Python2的代码,这时需要将Python下的tool下的scripts目录添加到环境变量中,然后运行2to3 ...
- ListView滑动删除
本来准备在ListView的每个Item的布局上设置一个隐藏的Button,当滑动的时候显示.但是因为每次只要存在一个Button,发现每个Item上的Button相互间不好控制.所以决定继承List ...
- codevs 1689 搭建高塔
/*机智sort二维转一维*/ #include<iostream> #include<cstdio> #include<cstring> #include< ...