2017/08/03

今天刷微博看到 @陈利人 在微博问一个搜索的问题:

最近在用 Elastic Search 做项目,遇到了这样一个需求,本以为 SpanNearQuery 能实现,发现不可以,因为 span_near 中定义的 slop 是两个邻近词之间的距离,而不是整个 query 所在的窗口的大小。

现在抛出这个这个问题求助,有解决方案的欢迎留言,一旦采用必有重谢。
给定 n 个词,要求搜索所有含有这 n 个词的文档,并且满足这 n 个词同时出现在长度为 m 的窗口中,还有就是这 n 个词在文档中出现的次序和搜索时的次序一致。
比如,搜索词是:“明天 北京 上海 火车”,要求文档中匹配的窗口的大小是12个词。
文档1: 大概 明天 有 一辆 从 北京 开往 上海 的 火车 将 提速 10%
1 2 3 4 5 6 7 8 9 10 11 12 13
这个文档满足条件,2 6 8 10 正好次序和 “明天 北京 上海 火车“一致,并且这几个词的跨度是8,小于要求的12窗口。
文档2: 大概 明天 有 一辆 从 上海 开往 北京 的 火车 将 提速 10%
1 2 3 4 5 6 7 8 9 10 11 12 13
这个不满足,因为“上海 北京”的次序不满足。
文档3: 大概 明天 上午 八点 左右 有 一辆 从 上海 开往 北京 的 混合 动力 的 火车 将 提速 10%
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18    19
这个不满足,2 9 11 16,这几个词的跨度是14,大于要求的12窗口。说明了吧,再次提前谢谢。

这个问题解决可以写个自定义query,根据term的position信息扩展,等业余时间多了写个玩玩。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 迪士尼乐园旅游攻略 迪士尼乐园太大,如果不赶时间,建议购买二日游门票,可以把项目都玩完。一天时间游,必须提前做好攻...
    可爱的纯子阅读 421评论 0 0
  • 震撼体验课程 | 英语单词速记王:两天记忆一册英语课本单词,让孩子赢在起点! 凯词教育 作者 凯词教育番禺校区重...
    凯词心智教育阅读 352评论 0 0
  • 我想学习英语! 我想种好我的多肉! 我想有个好厨艺! 我想练习写作! 我想将骨感的现实“吃胖”配上丰满的理想! 那...
    落落的小心事阅读 254评论 0 0
  • 时间:12月18日 学员:刘芷语桐、李然云齐、王荣浩 任课教师:张老师 课程目标: 1.了解齿轮传动:加速运动:大...
    嘻_阅读 269评论 0 0
  • 浮躁俗世,我们更愿意浪费时间在自身以外的事物上,看待某件事物,会别人会怎么看,我的看法是否需要真实呈现……很多问号...
    你我他学习吧阅读 355评论 0 0