主题:Levenshtein Distance(LD);
相关介绍:Levenshtein distance是由俄国科学家Vladimir Levenshtein在1965年设计并以他的名字命名的。如果不能拼写或发Levenshtein音,通常可以称它edit distance(编辑距离);
用途:该算法用于判断两个字符串的距离,或者叫模糊度。个人理解就是差异程度。而差异的标准就是1)加一个字母(Insert),2)删一个字母(Delete),3改变一个字母(Substitute)。
算法描述:
Step |
Description |
1 |
Set n to be the length of s.Set m to be the length of t. |
2 |
Initialize the first row to 0..n. |
3 |
Examine each character of s (I from 1 to n). |
4 |
Examine each character of t (j from 1 to m). |
5 |
If s[i] equals t[j], the cost is 0. |
6 |
Set cell d[I,j] of the matrix equal to the minimum of: |
7 |
After the iteration steps (3, 4, 5, 6) are complete, the distance is found in cell d[n,m]. |
1、 得到源串s长度n与目标串t的长度m,如果一方为的长度0,则返回另一方的长度。
2、 初始化(n+1)*(m+1)的矩阵d,第一行第一列的值为0增至对应的长度。
3、 遍历数组中的每一个字符(i,j从1开始)。如果s[i]与t[j]的值相等,cost值为0,否则为1。D[i][j]的值为d[i-1,j] + 1(左边的值加1)、d[I,j-1] + 1.(上边的值加1)、d[i-1,j-1] + cost (斜上角的值加cost) 中的最小者。
4、 等第三步遍历完后,右下角d[n,m]的值就为两个字符串的距离。
应用演示:source:word与target:world比较过程。
应用举例:据《开发自己的搜索引擎——Lucene 2.0+Heriterx
》记载P134页记载,lucene中FuzzyQuery(模糊匹配)就是应用该算法的;也可用于Spell checking(拼写检查),Speech recognition(语句识别),DNA analysis(DNA分析) ,Plagiarism detection(抄袭检测)。
参考资料:
http://www.merriampark.com/ld.htm
http://my.oschina.net/MrMichael/blog/339217
相关推荐
`FuzzyQuery`基于Levenshtein距离算法,该算法计算两个字符串之间的差异程度,用于衡量它们的相似性。 首先,我们需要了解如何创建一个`FuzzyQuery`。在`FuzzyQueryDemo.java`这个示例文件中,我们可能会看到类似...
FuzzyQuery允许设置一个最小编辑距离(Levenshtein Distance),这是衡量两个字符串之间差异的一种度量。当用户输入查询时,Lucene会自动计算查询词与其他词汇的编辑距离,并返回那些距离小于设定阈值的文档。 项目...
为了高效地处理和检索存储的词项(term),Lucene使用了FST(有限状态转换器,Finite State Transducer)这一核心算法构建内存索引。FST算法不仅可以用于快速检索term信息存储的位置,而且还支持判断一个term是否...
1. **FuzzyQuery**:通过设置模糊度参数`fuzziness`,如`new FuzzyQuery(new Term("field", "keyword"), Fuzziness.AUTO)`,允许查询词与索引词之间有一定的编辑距离。 2. **WildcardQuery**:使用通配符`?`(代表...
总的来说,`lucene开发中用到的jar包`涉及到的核心概念是文件解析和全文搜索。`htmlparser.jar`和`htmllexer.jar`用于处理HTML,`pdfbox-0.8.0-incubating.jar`则服务于PDF文档的解析。了解并熟练掌握这些工具,将有...
《教你运用Lucene算法》 Lucene是一款强大的全文搜索引擎库,它提供了丰富的信息检索功能,包括文本分析、索引构建、搜索以及结果排名等。在深入理解Lucene的工作原理时,我们首先要关注的是其核心算法。 一、单个...
《深入理解Lucene之四:主要算法介绍》 Lucene是一个强大的开源全文搜索引擎库,它在信息检索领域具有广泛的应用。本资料旨在介绍Lucene在构建索引、增量归并、查找定位等方面的关键算法,帮助读者更深入地理解其...
深入了解 Lucene 之三排序算法 Lucene 排序算法是搜索引擎中的核心组件之一,负责将搜索结果按照相关度排序以便用户快速找到所需信息。 Lucene 的排序算法主要基于 tf-idf 模型,以下是 Lucene 排序算法的详细介绍...
### Lucene 使用正则表达式 #### 知识点概览 1. **Lucene简介** 2. **正则表达式(regex)在Lucene中的应用** 3. **regexQuery详解** 4. **示例代码解析** 5. **索引创建与查询流程** 6. **正则表达式的语法** #### ...
### Lucene检索算法的改进 #### 检索系统采用的技术 在《Lucene检索算法的改进》一文中,作者们介绍了他们所采用的一系列技术来改进基于Lucene的检索系统。具体而言,这些技术包括: 1. **开放源代码的文本检索...
3. **近似搜索**:通过编辑距离(Levenshtein Distance)或余弦相似度等算法,查找与查询词相近的术语。 4. **高亮显示**:搜索结果中匹配的查询词可以被高亮显示,使用`Highlighter`类实现。 5. **更新和删除索引...
总之,Lucene的BM25示例是一个极好的学习资源,它涵盖了从索引构建到查询执行的关键步骤,并通过实际对比展示了如何使用更先进的相似度算法提升搜索效果。对于希望在文本检索领域深入研究或应用Lucene的开发者来说,...
npm install lucene-query-string-builder --save 特征 创建术语字符串时转义lucene特殊字符 包含所有lucene用途的运算符 简单的lucene.builder函数,用于定义lucene查询构建器 用法 让我们看看如何使用Lucene查询...
3. **纠错算法**: Lucene5使用了编辑距离算法(如Levenshtein距离)来计算单词间的相似度,找到最接近的正确拼写。 4. **建议排序与返回**: 根据相似度得分对纠正建议进行排序,然后返回前几个最可能的正确拼写。 *...
支持许多强大的查询类型,比如 PhraseQuery、WildcardQuery、RangeQuery、FuzzyQuery、BooleanQuery 等。 支持解析人们输入的丰富查询表达式。 允许用户使用定制排序、过滤和查询表达式解析扩展搜索行为。 使用基于...
lucene,lucene教程,lucene讲解。 为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store....
《深入剖析Lucene中的中文分词算法源码》 在信息检索领域,Lucene作为一款强大的全文搜索引擎库,被广泛应用于各种数据检索系统。而中文分词是Lucene处理中文文本时的关键步骤,它决定了搜索的准确性和效率。本文将...
Lucene中的SpanQuery和PhraseQuery详解 Lucene是一个功能强大的搜索引擎库,提供了多种查询方式,其中SpanQuery和PhraseQuery是两个重要的查询类型。本文将详细介绍SpanQuery和PhraseQuery的使用和区别。 一、...
1. **高性能**:Lucene采用了高效的索引和搜索算法,能够在海量数据中迅速找到匹配的文档。 2. **分词处理**:Lucene支持多种分词器,可以对文本进行分析,将句子拆分成可搜索的关键词。 3. **倒排索引**:Lucene...