有个人长的像洋葱,走着走着就哭了…….

elasticsearch的临近检索

Elasticsearch | 作者 allforyou2018 | 发布于2021年03月16日 | 阅读数:1152

请教一个关于ES的临近检索的问题:
现有如下检索需求
英文检索,一句话内如 a computer system 中,要求a 和 computer 间最多不超过2个单词,computer和system中最多不超过3个单词,a computer system 位置顺序不能变
 
因为顺序的要求,当前采用的是query_string的phrasequery,如下
{
  "query": {
    "bool": {
      "must": {
        "query_string": {
          "query": "(TI:(\"a computer system\"))",
        }
      }
    }
  }
}
 
了解到es的邻近检索只能用在两个元素之间如  TI:("a computer"~2),像我这种需要在一句话中用到多个邻近的该怎么做呢?
注:①TI:("a computer system"~5) 将邻近数值累加的方法并不准确
       ②TI:("a computer"~2) AND TI:("computer system"~3)也不合理,如 computer system a computer也会命中
已邀请:

envy666

赞同来自:

7.x 以后有种查询叫 Intervals,可以满足你的需求

LG_ES

赞同来自:

大佬,2个词之间临近搜索,又啥方案可以解决呢?

要回复问题请先登录注册