台州seo网站管理,织梦 旅游网站模板,湖南seo优化报价,苏州北京网站建设Google的“您是不是要”功能 在上一篇文章中对Lucene进行了介绍之后 #xff0c;现在是时候提高它#xff0c;创建一个更复杂的应用程序了。 您肯定最熟悉Google的“您是不是要”功能#xff08;其他搜索引擎也支持此功能#xff09;。 这是一个例子#xff1a; 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.length0) {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 它是驻留在内存中的实现应该进行评估。 下一步是创建一个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