Elasticsearch:查找具有与查询相同顺序的术语的文本

时间:2016-12-02 16:42:11

标签: elasticsearch

假设我搜索“快速狐狸”我想让这个查询匹配所有文件,这些文件先快速,然后是棕色,不一定,但它们可以相距任何距离,但是相同的订单。因此下面的文件“快速漂亮的棕色狐狸”将匹配,但文件“漂亮的狐狸,这是快速的”将不匹配。

短语匹配会保留顺序但限制性太强,以至于术语必须位于相对于彼此的相同位置,并且添加斜率不会保留顺序。那么如何完成这项任务呢?

1 个答案:

答案 0 :(得分:0)

您需要具有span_near选项和slop选项的in_order查询:https://www.elastic.co/guide/en/elasticsearch/reference/5.x/query-dsl-span-near-query.html

文档中的示例查询:

GET /_search
{
    "query": {
        "span_near" : {
            "clauses" : [
                { "span_term" : { "field" : "value1" } },
                { "span_term" : { "field" : "value2" } },
                { "span_term" : { "field" : "value3" } }
            ],
            "slop" : 12,
            "in_order" : false
        }
    }
}