apache lucene

Google的“您是不是要”功能
在上一篇文章中对Lucene进行了介绍之后 ,现在是时候提高它并创建一个更复杂的应用程序了。 您肯定最熟悉Google的“您是不是要”功能(其他搜索引擎也支持此功能)。 这是一个例子:

Lucene SpellChecker子项目
可以使用Lucene项目在Java中实现此功能,本教程将向您展示如何使用。 该实现将基于Lucene的子项目之一,该子项目名为SpellChecker(请参阅拼写检查器API )。 这篇文章的灵感来自于我在InfoQ上读到的一篇最近的文章,名为“ 在Java中实现Google的“您的意思”功能 ”。 作者简短描述了所使用的编辑距离算法,然后提供了一个简单的代码示例。 我还发现了一篇类似的文章,标题为“ 您的意思是:Lucene吗? ”,但这是在2005年写的,所以我想它现在已经过时了。 首先查看这些内容,然后再采取一些措施是一个好主意。

寻找基础字典
就本教程而言,将使用英语词典文本文件。 您可以对此进行简单搜索 ,也可以直接下载此压缩文件 。 该文件非常简单,仅包含用行分隔的单词。 提取的文件名为“ fulldictionary00.txt”。

使用Lucene SpellChecker API
让我们开始创建一个新的Eclipse项目(可能名为“ LuceneSuggestionsProject”),然后导入必要的JAR文件。 除了主要的JAR lucene-core-3.0.1.jar外,我们还需要lucene-spellchecker-3.0.1.jar。 这可以在解压缩的tarball文件夹“ lucene-3.0.1 \ contrib \ spellchecker”中找到。 如果您不知道如何查找发行版以及如何开始该项目,请查看我以前的文章( 全文搜索Apache Lucene简介 )。 创建一个名为“ SimpleSuggestionService”的新类,并确保包含一个主要方法。 此类的源代码如下:

package com.javacodegeeks.lucene.spellcheck;import java.io.File;import org.apache.lucene.search.spell.PlainTextDictionary;
import org.apache.lucene.search.spell.SpellChecker;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;public class SimpleSuggestionService {public static void main(String[] args) throws Exception {File dir = new File("c:/spellchecker/");Directory directory = FSDirectory.open(dir);SpellChecker spellChecker = new SpellChecker(directory);spellChecker.indexDictionary(new PlainTextDictionary(new File("c:/fulldictionary00.txt")));String wordForSuggestions = "hwllo";int suggestionsNumber = 5;String[] suggestions = spellChecker.suggestSimilar(wordForSuggestions, suggestionsNumber);if (suggestions!=null && suggestions.length>0) {for (String word : suggestions) {System.out.println("Did you mean:" + word);}}else {System.out.println("No suggestions found for word:"+wordForSuggestions);}}}

是的,就是这么简单。 如果运行应用程序(使用“ hwllo”作为输入字),将出现以下输出:

解释SpellChecker API
该代码非常简单,但是我将详细介绍一些类。 首先,您需要一个Directory ,它是文件的平面列表。 此类是抽象的,因此我们将FSDirectory用作实际实现。 FSDirectory将索引文件存储在文件系统中(为了更快速地访问RAMDirectory ,应评估该RAMDirectory是驻留在内存中的实现)。 下一步是创建一个SpellChecker实例,这是我们应用程序的核心。 请注意,默认的StringDistance是LevensteinDistance 。 如果您希望使用其他算法( JaroWinklerDistance或NGramDistance ),则可以使用setStringDistance方法。 接下来,我们实例化一个PlainTextDictionary ,它指向我们下载的文本文件。 将字典编入索引,然后使用SpellChecker对象检索拼写错误的单词的建议单词。

我想您现在准备创建下一个大型搜索引擎。 您可以在此处找到相关的Eclipse项目。

请享用!

相关文章 :
  • 全文搜索Apache Lucene简介
  • 使用Spring AspectJ和Maven进行面向方面的编程
  • 调度Java应用程序中的主体
  • 依赖注入–手动方式

翻译自: https://www.javacodegeeks.com/2010/05/did-you-mean-feature-lucene-spell.html

apache lucene

apache lucene_Apache Lucene拼写检查器的“您是不是要”功能相关推荐

  1. Apache Lucene拼写检查器的“您是不是要”功能

    Google的"您是不是要"功能 在上一篇文章中对Lucene进行了介绍之后 ,现在是时候提高它,创建一个更复杂的应用程序了. 您肯定最熟悉Google的"您是不是要&q ...

  2. 介绍 Java 平台的 Jazzy:一种新的拼写检查器 API

    计算机擅长执行快速搜索操作,可以根据给定的搜索词,对大量存储的信息快速进行搜索.但是,拼写检查应用程序所要求的搜索能力,不仅仅是正确的字符串匹配.在这篇文章中,我将介绍搜索算法的一些历史,包括语音匹配 ...

  3. solr创建索引_Solr:创建拼写检查器

    solr创建索引 在上一篇文章中,我谈到了Solr Spellchecker的工作原理,然后向您展示了其性能的一些测试结果. 现在,我们将看到另一种拼写检查方法. 与其他方法一样,此方法使用两步过程. ...

  4. Solr:创建拼写检查器

    在上一篇文章中,我谈到了Solr Spellchecker的工作原理,然后向您展示了其性能的一些测试结果. 现在,我们将看到另一种拼写检查方法. 与其他方法一样,此方法使用两步过程. 相当快速的&qu ...

  5. Jazzy--一种新的拼写检查器API(Java平台)

    计算机擅长执行快速搜索操作,可以根据给定的搜索词,对大量存储的信息快速进行搜索.但是,拼写检查应用程序所要求的搜索能力,不仅仅是正确的字符串匹配. 在这篇文章中,我将介绍搜索算法的一些历史,包括语音匹 ...

  6. [Google API](6)拼写检查器和缓存页面

    作为 Google 创建索引过程的有机组成部分,Google 要检索被建立索引的页面副本,在搜索结果中为用户提供到缓存页面的链接.主要的缺点是用户看不到更新后的内容,但一些优点也是存在的. 检索缓存页 ...

  7. python代码大全p-21行Python代码实现拼写检查器

    引入 大家在使用谷歌或者百度搜索时,输入搜索内容时,谷歌总是能提供非常好的拼写检查,比如你输入 speling,谷歌会马上返回 spelling. 下面是用21行python代码实现的一个简易但是具备 ...

  8. 拼写检查工具是android,Android的文本和输入---拼写检查器(一)-Go语言中文社区...

    Android平台提供能够让你在应用程序中执行和访问拼写检查的拼写检查器框架.这个框架是由Android平台提供的文本服务API之一. 要在应用程序中使用该框架,你就要创建一个特殊的Android服务 ...

  9. 【小实验讲解】贝叶斯拼写检查器

    贝叶斯拼写检查器 python代码 拼写检查器的代码+注释 python代码 big.txt只是一个语料库大家网上可以找得到. 拼写检查器的代码+注释 # ##求解: argmaxc P(c|w) & ...

最新文章

  1. pika-NoSQL原理概述
  2. Java基础学习总结(15)——java读取properties文件总结
  3. 基本算法之递推与递归的简单应用
  4. S2-016、S2-017
  5. jQuery Ajax 方法调用 Asp.Net WebService 的详细例子
  6. 关于find指令的一点使用小心得 II
  7. js判断是否为手机端访问
  8. ASP.NET开发框架之HIPPO技术内幕(三)--数据库连接
  9. java jar 是什么文件_什么是.jar文件?如何打开jar文件?
  10. Spring和SpringBoot学习
  11. ERP系统实施的最佳落地方案
  12. java and android_java jvm和android DVM区别
  13. 如何一步步打造完美的成绩查询系统平台?
  14. 【NOIP2018提高组D2T2】填数游戏
  15. MATLAB房价,MATLAB实现波士顿房价预测使用BP神经网络
  16. 收集的各个方向的开发视频教程,分享给自学的同学
  17. 杂言乱谈,以后的日志很辉煌?
  18. 如何在 Ubuntu 20.04 上安装 Wine 6.0
  19. 随机分析 || 鞅不等式 —— Doob不等式、BDG不等式、指数鞅不等式
  20. c语言参悟之旅,《C语言参悟之旅》-读书笔记(一)

热门文章

  1. 相比学习好的学生,老师最喜欢努力认真学习的学生
  2. 《四世同堂》金句摘抄(十八)
  3. sh(Spring+Spring mvc+hibernate)——IEmpDao.java
  4. Redis(案例一:注册登录-图形验证码+谷歌开源Kaptcha)
  5. android之视频直播与播放Vitamio
  6. python123测验9程序题_python程序设计实验二
  7. c mysql 编码_mysql编码转换 mysql编码设置详解
  8. linux 提取cpio_15. Linux提取RPM包文件(cpio命令)详解
  9. 转:Java并发编程与高并发解决方案(一)
  10. 自我审视记录本_春天重新审视战略模式