span查询,实质上不难理解(相对来说)。
不过我刚开始看到的时候,非常非常地蒙,
实在整不明白它到底出来的结果是什么意思。
比如这个问题:
https://elasticsearch.cn/question/10296
它的形式是这样的:
span_not(include : span_term, exclude : span_near)
可能Span实际中用得不多,但如果你想知道它的意义的话,
你要么去猜它的意思,要么尝试看代码而理解span查询的意义,这是一个花时间的过程。
看ES官网,对Span查询并没有详细地解释,
只给一个查询DSL代码,连示例结果都没有。
网上很多文章,感觉这里是一个很好的参考。
https://blog.csdn.net/weixin_3 ... 28640
最后部分,他给出了一个Lucene源码中的masking查询的示例,
没有对这个示例作出解释,包括masking查询的意义,
还有这个slop=-1的意思
这里的slop=-1,并不是顺序倒过来的意思。
比如 "aaa xxx bbb"
你用Near("aaa", "bbb", 0)查不到,
因为中间隔了一个词, 所以用Near("aaa", "bbb", 1)就可以查到,
但你用Near("bbb", "aaa", -1)并不能查到这个文档
另外,图中这个很怪异的查询用法,
在ES中被用在match_phrase_prefix查询当中
不过我刚开始看到的时候,非常非常地蒙,
实在整不明白它到底出来的结果是什么意思。
比如这个问题:
https://elasticsearch.cn/question/10296
它的形式是这样的:
span_not(include : span_term, exclude : span_near)
可能Span实际中用得不多,但如果你想知道它的意义的话,
你要么去猜它的意思,要么尝试看代码而理解span查询的意义,这是一个花时间的过程。
看ES官网,对Span查询并没有详细地解释,
只给一个查询DSL代码,连示例结果都没有。
网上很多文章,感觉这里是一个很好的参考。
https://blog.csdn.net/weixin_3 ... 28640
最后部分,他给出了一个Lucene源码中的masking查询的示例,
没有对这个示例作出解释,包括masking查询的意义,
还有这个slop=-1的意思
这里的slop=-1,并不是顺序倒过来的意思。
比如 "aaa xxx bbb"
你用Near("aaa", "bbb", 0)查不到,
因为中间隔了一个词, 所以用Near("aaa", "bbb", 1)就可以查到,
但你用Near("bbb", "aaa", -1)并不能查到这个文档
另外,图中这个很怪异的查询用法,
在ES中被用在match_phrase_prefix查询当中
2 个回复
Charele - Cisco4321
赞同来自:
这里的文章,我感觉他说得不太准确,
1 SpanTermQuery没有任何作用?
我的感觉相反,SpanTermQuery是最基础最重要的span查询
2 不知道是不是版本原因,
现在版本中,SpanTermQuery和TermQuery一模一样,
如果你分别执行两个查询,结果,打分,完全一样
Charele - Cisco4321
赞同来自:
n.跨度,范围;跨距,宽度;<空>翼展;<南非口>很,非常;全长;持续时间;持续时间,时间阶段;拉紧,张紧;指距,一拃宽;一群,一伙;小范围,短距离;<海>跨绳;<数>生成空间;(桥或拱的)墩
先说下,ES/Lucene里面这个跨度的意思。
虽然这个描述可能不完整不全面,但是至少经得起推敲的。