在ElasticSearch中使用邻近度(斜率)0和1进行搜索

vawmfj5a  于 2022-10-06  发布在  ElasticSearch
关注(0)|答案(1)|浏览(173)

我已经创建了以下索引

PUT /proximity_example_1
{

    "mappings":{
      "properties":{
        "doc_id": {
          "type": "text"
        },
        "test_name":{
          "type": "text"
        }
      }
  }
}

然后为文档编制索引

POST proximity_example_2/_doc
{
  "doc_id": "id1",
  "test_name": "test proximity here"
}

然后以邻近度0进行查询,如下所示

GET proximity_example_2/_search
{
  "query": {
    "match_phrase": {
      "test_name": {
        "query": "proximity test",
        "slop": 0.0 
      }
    }
  }
}

但是我没有得到任何结果,然后我用接近度1进行了搜索,这次我也没有得到任何文件。但当我在接近度大于1的情况下进行搜索时,我得到了结果。

GET proximity_example_2/_search
{
  "query": {
    "match_phrase": {
      "test_name": {
        "query": "proximity test",
        "slop": 2.0 
      }
    }
  }
}
GET proximity_example_2/_search
{
  "query": {
    "match_phrase": {
      "test_name": {
        "query": "proximity test",
        "slop": 3.0 
      }
    }
  }
}

那么,这是否意味着在ElasticSearch中,当我们以接近度*10搜索词的顺序进行搜索时,这很重要吗?

谢谢.。

bwntbbo3

bwntbbo31#

值为0的SLOP与普通短语搜索一样好(非常严格,在Elasticearch中应该有完全相同顺序的搜索词),随着斜率的增加,这种限制会降低,您会有更多的搜索结果,但注意,增加到较高的数字会违背短语搜索的目的,您会得到无关的结果。

您可以阅读thisthis详细的博客文章,其中解释了它的内部工作原理

相关问题