1、在匹配结果中排除相互交迭的跨度
SpanNotQuery构造函数的第一个参数表示要包含的跨度对象,第二个参数表示要排除的跨度对象。
1)
SpanNearQuery quick_fox=new SpanNearQuery(newSpanQuery[]{quick,fox},1,true);
dumpSpans查询时输出
the <quick brown fox> jumps overthe lazy dog (0.18461232)
the <quick redfox> jumps over the sleep cat(0.18461232)
2)
SpanNotQuery quick_fox_dog=new SpanNotQuery(quick_fox,dog);
dumpSpans查询时输出
the <quick brown fox> jumps overthe lazy dog (0.18461232)
the <quick redfox> jumps over the sleepcat (0.18461232)
3)只匹配了第一个文档,因为第二个文档包括red
SpanNotQuery no_quick_red_fox=newSpanNotQuery(quick_fox,red);
dumpSpans查询时输出
the <quick redfox> jumps over the sleep cat(0.18461232)
2、SpanOrQuery,在构造函数中对一个SpanQuery对象的集合进行封装
1)
SpanNearQuery qf_near_ld=new SpanNearQuery(newSpanQuery[]{quick_fox,lazy_dog},3,true);
dumpSpans查询时输出
the <quick brown fox jumps over the lazydog> (0.38461232)
2)
SpanNearQuery qf_near_sc=new SpanNearQuery(newSpanQuery[]{quick_fox,sleep_cat},3,true);
dumpSpans查询时输出
the <quick red fox jumps overthe sleep cat> (0.38461232)
3)查询这样一些文档,这些文档或者包括"quick fox" near "lazy dog"或者包括"quick fox"near "sleep cat"
dumpSpans查询时输出
the <quick brown fox jumps over the lazydog> (0.38461232)
the <quick red fox jumps overthe sleep cat> (0.38461232)
本文介绍了如何使用Lucene中的SpanNotQuery和SpanOrQuery来精确地控制文本搜索结果。通过构造具体的SpanQuery实例,可以实现复杂的文档匹配逻辑,例如排除某些特定词汇或组合多个近似匹配条件。
2344

被折叠的 条评论
为什么被折叠?



