`
jimmee
  • 浏览: 539955 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

lucene的拼写检查的实现原理

阅读更多

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 全包 包括源码

    除了核心模块,Lucene还提供了一些附加功能,如 SpellChecker(拼写检查)、Highlighter(高亮显示搜索结果)和Remote搜索支持。在源码中,你可以找到对应的实现类,如SpellChecker、Highlighter等。 这个压缩包中...

    lucene 华电项目 源码

    此外,Lucene还支持多种高级特性,如faceted search(分面搜索)、spell checking(拼写检查)和highlighting(高亮显示)。在华电项目中,这些功能可能被用于提供更丰富的用户体验,例如,当用户输入错误的关键词时...

    lucene in action源码2

    6. 高级特性:除了基本的搜索功能,Lucene还提供了高级特性,如faceted search(分面搜索)、highlighting(高亮显示)、 Spell checking(拼写检查)等,这些在源码中都有对应的实现。 通过阅读和分析《Lucene in ...

    Lucene搜索引擎开发权威经典(附盘源码)【于天恩】.zip

    高级话题可能包括分布式搜索、Lucene与Hadoop的集成,以实现大规模数据的处理,以及如何使用Lucene的高级特性,如faceted search(分面搜索)、highlighting(高亮显示)和 SpellChecker(拼写检查)。此外,书中的...

    lucene3.0原理与分析

    ### Lucene 3.0 原理与分析 #### 全文检索基本原理 **全文检索**是一种针对非结构化数据(例如电子邮件、Word文档等)进行搜索的技术。它与传统的结构化数据搜索(例如数据库查询)不同,后者通常依赖于预定义的...

    Lucene实战(第二版)源代码

    此外,Lucene还提供了多种高级特性,如faceting(分面搜索)、highlighting(高亮显示)和spellchecking(拼写检查)。这些功能可以帮助构建更丰富的搜索体验。在源代码中,我们能看到如何使用这些功能的实例,这...

    Lucene5学习之Suggest关键字提示

    而DirectSpellChecker主要处理拼写纠错,检查用户输入是否正确,并提供纠正建议。 要使用这些Suggester,我们需要进行以下步骤: 1. **创建Suggest索引**:这通常涉及到对输入数据的预处理,包括分词、赋予权重等...

    1.解密搜索引擎技术实战:Lucene&Java;精华版(第3版)

    自然语言处理部分从统计机器学习的原理出发,包括了中文分词与词性标注的理论与实现及在搜索引擎中的应用等细节,同时对文档排重、文本分类、自动聚类、句法分析树、拼写检查等自然语言处理领域的经典问题进行了深入...

    解密搜索引擎技术实战-Lucene&java;精华版

    自然语言处理部分从统计机器学习的原理出发,包括了中文分词与词性标注的理论与实现及在搜索引擎中的应用等细节,同时对文档排重、文本分类、自动聚类、句法分析树、拼写检查等自然语言处理领域的经典问题进行了深入...

    lucene简单介绍及solr搭建使用

    它不仅包含了Lucene的所有搜索功能,还添加了集群、分布式搜索、缓存、负载均衡、结果高亮、拼写检查、近似搜索等特性。Solr通过XML或JSON等格式的HTTP接口对外提供服务,方便与其他系统集成。其内置的管理界面使得...

    luceneDemo

    除了基本的索引和搜索,Lucene还提供了高级特性,如faceting(分类)、highlighting(高亮显示)和spellchecking(拼写检查)。在"luceneDemo"中,我们可能能看到这些功能的实现,比如通过FacetsConfig进行分类统计...

    Lucene.Net全文检索Demo

    在这个“Lucene.Net全文检索Demo”中,我们将深入探讨其核心功能及实现原理。 1. **基础概念** - **索引**:在Lucene.Net中,全文检索依赖于索引。索引类似于图书的目录,将文档内容转换为便于搜索的结构。 - **...

    lucene4.5.0的源文件

    10. **高级特性**:如 faceted search(分面搜索)、spell checking(拼写检查)、highlighting(高亮显示)等。 通过深入研究Lucene 4.5.0的源代码,开发者可以增强其在全文搜索、信息检索领域的专业技能,这对于...

    lucene 查询 学习

    除了基本的查询和索引管理功能之外,Lucene还提供了一些高级特性,例如高亮显示、拼写检查等。 - **高亮显示**:当查询结果包含多个匹配项时,高亮显示可以帮助用户更快地定位到关键信息。 - **拼写检查**:在用户...

    Lucene&solr.zip

    - **丰富的搜索功能**:Solr提供了多种查询语法和过滤器,如高亮显示、拼写检查、相关性评分等。 - **搜索界面**:Solr提供了一套简单的Web界面,用于管理和测试索引。 **3. Lucene和Solr的关系** Lucene是Solr的...

    Lucene搜索引擎资源大全

    - **拼写检查**: 自动纠正用户的拼写错误。 - **分布式搜索**: 通过Solr或Elasticsearch等扩展支持大规模数据的分布式搜索。 5. **实战应用** - **网站搜索**: 提升网站内部搜索体验。 - **日志分析**: 快速...

    lucene-3.3.0-src.zip

    `contrib`目录包含了社区开发的附加组件,如 SpellChecker(拼写检查)、Highlighter(高亮显示) 和 Ant任务等,它们丰富了Lucene的功能,满足更多应用场景。 通过对`lucene-3.3.0-src.zip`源码的深入学习,...

    lucene solr框架代码实例(可直接运行)

    5. **丰富的功能**:Solr包含多种搜索特性,如 faceted search(分面搜索)、高亮显示、拼写检查和自动补全等。 在提供的压缩包文件"Solr_01"中,包含了可直接运行的Solr实例,这将帮助我们快速上手并理解Solr的...

    lucene2.2API

    - **SpellChecker**:提供拼写检查功能,帮助用户纠正查询中的错误。 了解并掌握Lucene 2.2 API的这些知识点,可以帮助开发者构建出功能完善的全文搜索引擎,满足各种应用场景的需求。随着Lucene后续版本的迭代,...

    一个专业搜索公司关于lucene+solar资料(1)

    - 中文拼写检查相对复杂,通常需要结合语义分析技术。 - 如基于字典的纠错、基于机器学习的方法等。 **5.6 自动摘要** - **5.6.1 自动摘要技术** - 通过对文本进行分析,提取出关键信息作为摘要。 - 可以分为...

Global site tag (gtag.js) - Google Analytics