apache lucene_Apache Lucene拼写检查器的“您是不是要”功能
apache lucene
Google的“您是不是要”功能
在上一篇文章中對(duì)Lucene進(jìn)行了介紹之后 ,現(xiàn)在是時(shí)候提高它并創(chuàng)建一個(gè)更復(fù)雜的應(yīng)用程序了。 您肯定最熟悉Google的“您是不是要”功能(其他搜索引擎也支持此功能)。 這是一個(gè)例子:
Lucene SpellChecker子項(xiàng)目
可以使用Lucene項(xiàng)目在Java中實(shí)現(xiàn)此功能,本教程將向您展示如何使用。 該實(shí)現(xiàn)將基于Lucene的子項(xiàng)目之一,該子項(xiàng)目名為SpellChecker(請(qǐng)參閱拼寫檢查器API )。 這篇文章的靈感來(lái)自于我在InfoQ上讀到的一篇最近的文章,名為“ 在Java中實(shí)現(xiàn)Google的“您的意思”功能 ”。 作者簡(jiǎn)短描述了所使用的編輯距離算法,然后提供了一個(gè)簡(jiǎn)單的代碼示例。 我還發(fā)現(xiàn)了一篇類似的文章,標(biāo)題為“ 您的意思是:Lucene嗎? ”,但這是在2005年寫的,所以我想它現(xiàn)在已經(jīng)過(guò)時(shí)了。 首先查看這些內(nèi)容,然后再采取一些措施是一個(gè)好主意。
尋找基礎(chǔ)字典
就本教程而言,將使用英語(yǔ)詞典文本文件。 您可以對(duì)此進(jìn)行簡(jiǎn)單搜索 ,也可以直接下載此壓縮文件 。 該文件非常簡(jiǎn)單,僅包含用行分隔的單詞。 提取的文件名為“ fulldictionary00.txt”。
使用Lucene SpellChecker API
讓我們開始創(chuàng)建一個(gè)新的Eclipse項(xiàng)目(可能名為“ LuceneSuggestionsProject”),然后導(dǎo)入必要的JAR文件。 除了主要的JAR lucene-core-3.0.1.jar外,我們還需要lucene-spellchecker-3.0.1.jar。 這可以在解壓縮的tarball文件夾“ lucene-3.0.1 \ contrib \ spellchecker”中找到。 如果您不知道如何查找發(fā)行版以及如何開始該項(xiàng)目,請(qǐng)查看我以前的文章( 全文搜索Apache Lucene簡(jiǎn)介 )。 創(chuàng)建一個(gè)名為“ SimpleSuggestionService”的新類,并確保包含一個(gè)主要方法。 此類的源代碼如下:
是的,就是這么簡(jiǎn)單。 如果運(yùn)行應(yīng)用程序(使用“ hwllo”作為輸入字),將出現(xiàn)以下輸出:
解釋SpellChecker API
該代碼非常簡(jiǎn)單,但是我將詳細(xì)介紹一些類。 首先,您需要一個(gè)Directory ,它是文件的平面列表。 此類是抽象的,因此我們將FSDirectory用作實(shí)際實(shí)現(xiàn)。 FSDirectory將索引文件存儲(chǔ)在文件系統(tǒng)中(為了更快速地訪問(wèn)RAMDirectory ,應(yīng)評(píng)估該RAMDirectory是駐留在內(nèi)存中的實(shí)現(xiàn))。 下一步是創(chuàng)建一個(gè)SpellChecker實(shí)例,這是我們應(yīng)用程序的核心。 請(qǐng)注意,默認(rèn)的StringDistance是LevensteinDistance 。 如果您希望使用其他算法( JaroWinklerDistance或NGramDistance ),則可以使用setStringDistance方法。 接下來(lái),我們實(shí)例化一個(gè)PlainTextDictionary ,它指向我們下載的文本文件。 將字典編入索引,然后使用SpellChecker對(duì)象檢索拼寫錯(cuò)誤的單詞的建議單詞。
我想您現(xiàn)在準(zhǔn)備創(chuàng)建下一個(gè)大型搜索引擎。 您可以在此處找到相關(guān)的Eclipse項(xiàng)目。
請(qǐng)享用!
相關(guān)文章 :- 全文搜索Apache Lucene簡(jiǎn)介
- 使用Spring AspectJ和Maven進(jìn)行面向方面的編程
- 調(diào)度Java應(yīng)用程序中的主體
- 依賴注入–手動(dòng)方式
翻譯自: https://www.javacodegeeks.com/2010/05/did-you-mean-feature-lucene-spell.html
apache lucene
總結(jié)
以上是生活随笔為你收集整理的apache lucene_Apache Lucene拼写检查器的“您是不是要”功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 拉瓦萨咖啡属于什么档次(8款无糖口感品质
- 下一篇: jboss 配置上下文路径_JBoss