lucene是apache發布的開源搜尋引擎開發工具包,不僅提供了核心的搜尋功能,還提供了許多其他功能外掛程式,例如:拼寫檢查功能模組。
搜尋拼寫檢查模組實現類在lucene-suggest-x.xx.x.jar包中,package名為org.apache.lucene.search.spell,其中拼寫檢查功能的核心實現有3個類,
分別為:spellchecker、directspellchecker、wordbreakspellchecker;
3個類提供了不同的拼寫檢查方式,區別如下:
spellchecker:提供了原始的拼寫檢查功能,在拼寫檢查前需要重新建立索引(根據txt字典檔案建立索引或者已有索引檔案的某個字段建立索引),然後才可以進行拼寫檢查;
spellchecker原始碼分析檢視如下**:
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」;78
//目錄
9 directory directory = fsdirectory.open((new
file(spellindexpath)).topath());
1011 spellchecker spellchecker = new
spellchecker(directory);
1213
//以下幾步用來
初始化索引
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";
23int numsug = 10;
24//
拼寫檢查
25 string suggestions =spellchecker.suggestsimilar(queryword, numsug);
2627
reader.close();
28spellchecker.close();
29 directory.close();
directspellchecker使用:
1 directspellchecker checker = newdirectspellchecker();
2 string readerpath = "d:\\path";
3 indexreader reader =directoryreader.open(fsdirectory.open(
4 (new
file(readerpath)).topath()));
5 term term = new term("fieldname", "querytext");
6int numsug = 10;
7 suggestword suggestions = checker.suggestsimilar(term, numsug, reader);
python 拼寫檢查
無意中刷微博看到這篇文章作者用很簡短的語句寫了乙個拼寫檢查的python程式。看完之後發現原來拼寫檢查的原理是這樣的,之前感覺應該是很高深的東西。但是由於對python中lambda表示式的不怎麼理解於是,我就又憑著自己的理解簡單的寫了一遍。沒有原文中作者的優化部分,只是簡單的實現了功能。而且是只有...
單詞拼寫檢查
給定n個單詞 n 10000 給定m個查詢 輸出無法查詢見的單詞的個數 分析 貌似是雜湊表的入門題?我覺得好難。做雜湊表需要一些技巧的,大概就是對單詞的首 中 尾的字元順序碼加權,方便插入也方便查詢。遇到be和bee這種單詞可能費一些時間,不過總的來說還是很快的。單詞拼寫檢查 include inc...
python PyEnchant(拼寫檢查)
本文主要是記錄了一下pyenchant包的安裝以及簡單使用。這個包主要功能是對英語單詞進行拼寫檢查,並可以對拼寫錯誤的單詞推薦一些可能的正確單詞。使用pip直接安裝即可,指令如下 pip install pyenchant使用上述指令,如果安裝沒有錯誤就是安裝成功了,一般情況下 mac ubuntu...