如何使用未知/未指定的属性/属性集合构建搜索?

时间:2017-02-28 10:50:01

标签: search elasticsearch search-engine spring-data-elasticsearch

我正在开发一个产品搜索引擎,其中包含大量未定义的产品,这些产品不断增长。每个产品都有不同的属性,此时它们会保存在一个字符串键值对数组中,如下所示:

"attributes": [
                    {
                        "key": "Producttype",
                        "value": "Headphones - 3.5 mm plug"
                    },
                    {
                        "key": "Weight",
                        "value": "280 g"
                    },
                    {
                        "key": "Soundmode",
                        "value": "Stereo"
                    },
                    ....
                ]

每个产品也有一个类别。我使用elasticsearch 2.4.x来保存我想通过spring-data-elasticsearch搜索的数据。如果需要,可以升级到最新的elasticsearch版本。

正如您所看到的,属性非常通用。它还需要使用嵌套对象来搜索此属性。我也在考虑将这些属性预处理为标准化格式。例如"重量" key可以用不同的形式编写,如" Productweight"或"产品重量"。因为有很多属性,我不想为每个人创建一个自定义属性/字段,我想到只将重要的属性(如权重)映射到自定义的自己的字段并映射其他属性如上所述。

现在,如果有人搜索例如" iphone"我想在搜索结果页面的左侧显示一些方面。如果有人搜索"阿迪达斯的鞋子,那么这些面孔应该有所不同。使用nested objects使用上面给出的格式是否可以实现?是否有可能动态地构建关于结果集弹性搜索返回的facettes?例如。所有结果产品包含的最常见属性应该用于创建小平面。或者我是否必须在每个类别上保留一些预定义的过滤器/小平面?我认为这将是太多的工作,也不适用于产品可以有不同类别的搜索结果。在具有n种不同属性的实体上构建搜索功能以构建搜索功能的最佳做法是什么?将来会增长?

0 个答案:

没有答案