所谓PhraseQuery,就是通过短语来检索,比如我想查“big car”这个短语,那么如果待匹配的document的指定项里包含了"big car"这个短语,这个document就算匹配成功
。可如果待匹配的句子里包含的是“big black car”,那么就无法匹配成功了,如果也想让这个匹配,就需要设定slop,先给出slop的概念:slop是指两个项的位置之间允许的最大间隔距离,下面我举例来解释
:
我的待匹配的句子是:the quick brown fox jumped over the lazy dog.
例1:
如果我想用“quick fox
”来匹配出上面的句子,我发现原句里是quick [brown] fox
,就是说和我的“quick fox
”中间相差了一个单词的距离,所以,我这里把slop设为1,表示quick
和fox
这两项之间最大可以
允许有一个单词的间隔,这样所有“quick [***] fox
”就都可以被匹配出来了。
例2:
如果我想用“fox quick
”来匹配出上面的句子,这也是可以的,不过
比例1要麻烦,我们
需要看把“fox quick
”怎么移动
能形成“quick [***] fox
”,如下表所示,把fox
向右移动3次即可:
|
fox
|
quick
|
|
|
1
|
|
fox|quick
|
|
|
2
|
|
quick
|
fox
|
|
3
|
|
quick
|
|
fox
|
例3:
如果我想用“lazy jumped quick
”该如何匹配上面的句子呢?这个比例2还要麻烦,我们要考虑3个单词,不管多少个单词,slop表示的是间隔的最大距离,详细起见,我们分别来看每种组合:(我的待匹配的句子是:the quick brown fox jumped over the lazy dog.
)
-
lazy jumped:
原句是jumped [over] [the] lazy
,就是说它们两个之间间隔了2个词,如下所示:需要把lazy
向右移动4位
|
lazy
|
jumped
|
|
|
|
1
|
|
lazy|jumped
|
|
|
|
2
|
|
jumped
|
lazy
|
|
|
3
|
|
jumped
|
|
lazy
|
|
4
|
|
jumped
|
|
|
lazy
|
-
lazy jumped quick:
我们主要看lazy
和quick
,但是由于jumped
是在中间,所以移动的时候还是要把jumped
考虑在内,原句里lazy
和quick
的关系
是:quick [brown] [fox] [jumped] [over] [the] lazy ,quick lazy
中间间隔了5个词,所以如下图所示,把lazy向右移动8次
|
lazy
|
jumped
|
quick
|
|
|
|
|
|
|
1
|
|
lazy|jumped
|
quick
|
|
|
|
|
|
|
2
|
|
jumped
|
lazy|quick
|
|
|
|
|
|
|
3
|
|
jumped
|
quick
|
lazy
|
|
|
|
|
|
4
|
|
jumped
|
quick
|
|
lazy
|
|
|
|
|
5
|
|
jumped
|
quick
|
|
|
lazy
|
|
|
|
6
|
|
jumped
|
quick
|
|
|
|
lazy
|
|
|
7
|
|
jumped
|
quick
|
|
|
|
|
lazy
|
|
8
|
|
jumped
|
quick
|
|
|
|
|
|
lazy
|
-
最后是jumped qucik
,这里不详细画表格了,大家可以自己试试,应该是把jumped向右移动4次。
综合以上3种情况,所以我们需要把slop设为8才令“lazy jumped quick
”可以匹配到原句。
原文出自:http://www.haogongju.net/art/921633
分享到:
相关推荐
本文档详细讲解了各种SpanQuery的用法,以及它跟PhraseQuery的区别
为了对文档进行索引,Lucene 提供了五个基础的类 public class IndexWriter org.apache.lucene.index.IndexWriter public abstract class Directory org.apache.lucene.store.Directory public abstract class ...
lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例lucene实例
对lucene的封装对lucene的封装 对lucene的封装 对lucene的封装
c#下实现Lucene时间区间查询匹配。主要还是对Lucene查循对像Query的实现
lucene 对 xml建立索引 建立索引就是怎么简单 呵呵
lucene3.0 lucene3.0 lucene3.0 lucene3.0 lucene3.0
lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习lucene学习...
对于初学者很快掌握lucene 该文档详细的介绍了如何使用lucene 以及快速理解掌握lucene
Lucene3.0特性Lucene3.0特性
第2部分Lucene的应用,通过对Lucene内置工具的介绍,展示了Lucene技术的高级应用和在各种程序语言上的移植。. 本书既可作为学习材料,又可以作为参考手册。它适合于已经熟悉基本Java编程的读者,以及希望能够把强大...
关于lucene对数据库建立索引和进行查询。这方面的东西太少了。大家应该多上传一些资料。
赠送jar包:lucene-core-7.7.0.jar; 赠送原API文档:lucene-core-7.7.0-javadoc.jar; 赠送源代码:lucene-core-7.7.0-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.7.0.pom; 包含翻译后的API文档:lucene...
lucene学习教程lucene讲义 叫你用lucene算法
lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮 lucene.NET 中文分词 高亮
赠送jar包:lucene-core-7.2.1.jar; 赠送原API文档:lucene-core-7.2.1-javadoc.jar; 赠送源代码:lucene-core-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.2.1.pom; 包含翻译后的API文档:lucene...
lucene3源码分析
本课程由浅入深的介绍了Lucene4的发展历史,开发环境搭建,分析lucene4的中文分词原理,深入讲了lucenne4的系统架构,分析lucene4索引实现原理及性能优化,了解关于lucene4的搜索算法优化及利用java结合lucene4实现...
lucene-analyzers-common-4.2.0.jar; lucene-analyzers-kuromoji-4.2.0.jar; lucene-analyzers-phonetic-4.2.0.jar; lucene-codecs-4.2.0.jar; lucene-core-4.2.0.jar; lucene-grouping-4.2.0.jar; lucene-...
Annotated Lucene 中文版 Lucene源码剖析