Elasticsearch:得到最相似的结果

时间:2015-07-23 09:12:54

标签: elasticsearch

我对ElasticSearch比较陌生。我需要编写一个api,它返回与名称最相似的结果匹配。

示例:我想找一部手机的名字与'samsung s6'最相似,这是我的JSON查询:

{
    "query": {
        "match": {
            "title": {
                "query": 'samsung s6',
                "operator": "and"
            }
        }
    },
    "track_scores": True
}

我得到了(我自己格式化):

6 -  Samsung S6 Edge - 5.9510574
5 - Samsung S6       - 7.512151

其中第一个字段只是一个Id,第二个是ElasticSearch执行搜索的名称字段,第三个是得分。

我尝试按 _score 排序:

{
    "query": {
        "match": {
            "title": {
                "query": 'samsung s6',
                "operator": "and"
            }
        }
    },
    "track_scores": True,
    "sort": [
    {
        "_score": {
            "order": "desc"
        }
    }
    ]
}

似乎工作正常。但当我尝试使用其他名称时,即:'iphone 6':

3 - Apple iPhone 6         - 5.569293
1 - Apple iPhone 6 Plus    - 5.8405986

我如何才能获得与名称最相似的结果匹配?

更新:

这是映射:

"device_group": {
"properties": {
"id": {
  "type": "long"
},
"name": {
  "type": "string",
}
}
}

0 个答案:

没有答案