看,灰机...

请教一问题,elasticsearch如何实现句内检索或者段内检索

Elasticsearch | 作者 gaojun1212 | 发布于2018年11月15日 | 阅读数:2158

如题,一篇文章,如何实现输入的多关键词是同一句的句内命中,同理段内命中,即:多个关键词命中在一句话内或者一个段落里才算命中
 
现在没啥思路,想过,把文章拆句,拆段分别以数组的形式存在两个字段里,但是仔细想了同时试了一下,命中还是不能达到要求,还是不会只在数组中的某一条匹配命中,还是在数组的所有内容中匹配命中
 
请各位大佬走过路过,给点儿思路啥的,谢谢~
已邀请:

zz_hello

赞同来自:

match_phrase 设置slop可以部分实现上述功能。。。

rochy - rochy_he

赞同来自:

设计类似于下面的存储结构:
 
  • 句子文本
  • 句子所在段落编号
  • 句子所在文章编号

 
查询语句为:termsQuery("句子文本", "关键词1" , "关键词2", "关键词3")
 
然后根据查询结果聚合:
第一级根据 文章编号 聚合;
第二级根据 段落编号 聚合;
第三级聚合 为 terms聚合,设置 include 为查询的关键词;
这样根据聚合结果即可查询到匹配的段落编号
 
句子编号也可以通过这样的方法。
 
PS:可以考虑使用 match_phrase 设置 slop 替换 termsQuery 来作为查询条件

要回复问题请先登录注册