elasticsearch-多词短语无序查询,elasticsearch-短语
混合起来
精确短语匹配 或许是过于严格了。也许我们想要包含 quick brown fox'' 的文档也能够匹配
quick fox,''
, 尽管情形不完全相同。
我们能够通过使用 slop
参数将灵活度引入短语匹配中:
GET /my_index/my_type/_search { "query": { "match_phrase": { "title": { "query": "quick fox", "slop": 1 } } } }
slop
参数告诉 match_phrase
查询词条相隔多远时仍然能将文档视为匹配
。 相隔多远的意思是为了让查询和文档匹配你需要移动词条多少次?
我们以一个简单的例子开始吧。 为了让查询 quick fox
能匹配一个包含 quick
brown fox
的文档, 我们需要 slop
的值为 1
:
Pos 1 Pos 2 Pos 3 ----------------------------------------------- Doc: quick brown fox ----------------------------------------------- Query: quick fox Slop 1: quick ↳ fox
尽管在使用了 slop
短语匹配中所有的单词都需要出现, 但是这些单词也不必为了匹配而按相同的序列排列。 有了足够大的 slop
值,
单词就能按照任意顺序排列了。
为了使查询 fox quick
匹配我们的文档, 我们需要 slop
的值为 3
:
Pos 1 Pos 2 Pos 3
-----------------------------------------------
Doc: quick brown fox
-----------------------------------------------
Query: fox quick
Slop 1: fox|quick ↵ (1)
Slop 2: quick ↳ fox
Slop 3: quick ↳ fox
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。