ElasticSearch的价格比较网站

时间:2018-03-07 12:39:26

标签: elasticsearch comparison fuzzy-comparison

我希望建立一个价格比较网站并使用弹性搜索来帮助我这样做。我们将从不同供应商处比较的产品将有不同的产品名称,品牌名称等。我想知道的是,我能够使用弹性匹配2个基于产品标题的特定部分相同的产品搜索。这4个产品标题就是一个例子:

1)Apple Iphone 7黑色64GB 2)哑光黑色Iphone手机壳 3)64GB黑色I-phone 4)Apple Iphone充电器

如果我们网站上的用户点击Apple Iphone 7 Black产品 - >然后,我将查询Elastic Search以查找所有Apple Iphone 7 Black产品,并将它们及其数据返回到站点。但我只想要产品1& 3将被退回。

这是否适用于弹性搜索?如果是这样,任何人都可以向我展示JSON需要为此类或查询发送的大致轮廓吗?

由于

1 个答案:

答案 0 :(得分:0)

非常好的项目。我认为您需要与大多数字段匹配的类似产品,或者您可以查询短语匹配查询并返回类似产品。这是您找到类似产品的代码

{
    "query": {
        "more_like_this" : {
            "ids" : ["12345"],
            "fields" : ["field_1", "field_2"],
            "min_term_freq" : 1,
            "max_query_terms" : 12
        }
    }

}

词组匹配查询

{
    "query": {
            "bool": {
                "should": [
                    {"multi_match": {
                        "fields" : ["field_1", "field_2"],
                        "query": "Apple Iphone 7 Black 64GB",
                        "type": "phrase"
                                    }}
                                   ],
                    "must_not": [
                   {
                       "ids": {
                       "values": ["12345"]
                    }
               }
            ]
        }
    }

}

如果您需要模糊匹配,请替换

"type": "phrase"

"fuzziness" : "AUTO"