1. 建索引时, 使用ngram的方式创建索引
SpellChecker的indexDictionary方法
private static void addGram(String text, Document doc, int ng1, int ng2) { int len = text.length(); for (int ng = ng1; ng <= ng2; ng++) { String key = "gram" + ng; String end = null; for (int i = 0; i < len - ng + 1; i++) { String gram = text.substring(i, i + ng); doc.add(new Field(key, gram, Field.Store.NO, Field.Index.NOT_ANALYZED)); if (i == 0) { doc.add(new Field("start" + ng, gram, Field.Store.NO, Field.Index.NOT_ANALYZED)); } end = gram; } if (end != null) { // may not be present if len==ng1 doc.add(new Field("end" + ng, end, Field.Store.NO, Field.Index.NOT_ANALYZED)); } }
2. 查询时,分词也是使用ngram,suggestSimilar方法中:
for (int ng = getMin(lengthWord); ng <= getMax(lengthWord); ng++) { key = "gram" + ng; // form key grams = formGrams(word, ng); // form word into ngrams (allow dups too) if (grams.length == 0) { continue; // hmm } if (bStart > 0) { // should we boost prefixes? add(query, "start" + ng, grams[0], bStart); // matches start of word } if (bEnd > 0) { // should we boost suffixes add(query, "end" + ng, grams[grams.length - 1], bEnd); // matches end of word } for (int i = 0; i < grams.length; i++) { add(query, key, grams[i]); } }
3. 查询出来后, 再根据字符串相似的算法计算得分
// edit distance sugWord.score = sd.getDistance(word,sugWord.string);
相关推荐
Lucene 3.0 原理 Lucene 3.0 原理 Lucene 3.0 原理 Lucene 3.0 原理
这是一段基于lucene的拼写纠错代码,可以对英文拼写进行纠错.
lucene&solr原理分析,lucene搜索引擎和solr搜索服务器原理分析。
lucene索引结构原理
本课程由浅入深的介绍了Lucene4的发展历史,开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现...
Lucene的详细pdf文档(我都免积分下载的,但是只能最低选1积分,如果有办法的话,请大佬留言指教)
C#调用Lucene方法-实现快速搜索
LUCENE搜索引擎基本工作原理 详细介绍了搜索引擎的工作原理
Lucene_3.0_原理与代码分析
Lucene+3.0+原理与代码分析完整版,有详细的介绍。很不错。值得学习
Lucene+3.0+原理与代码分析Lucene+3.0+原理与代码分析
lucene自定义排序实现,大家有兴趣关注我的博客http://blog.csdn.net/wuyinggui10000/article/category/3173543
描述了Lucene中如何使用FST算法构建term的内存索引,使用了很多图,直观的展现了FST图的构建流程,能够对想了解lucene内部实现机制原理的同学有帮助。
Lucene实现全文检索
Lucene 原理 Lucene 原理与代码分析完整版.
lucene原理分析完整版,中文Lucene 原理与代码分析完整版
Lucene 搜索引擎 自然语言 全文检索的基本原理
lucene工作原理.docxlucene工作原理.docxlucene工作原理.docx
java代码 结合 lucene 实现的 公交搜索系统 java代码 结合 lucene 实现的 公交搜索系统 java代码 结合 lucene 实现的 公交搜索系统 java代码 结合 lucene 实现的 公交搜索系统 java代码 结合 lucene 实现的 公交...