我有5000万种产品的清单。每个产品都有200个功能列表。我希望通过匹配在200个功能中具有最大重叠的产品功能来寻找类似的产品。
目前我用空格连接200个单词并形成一个长字符串。当我想找到特定产品的类似产品时,我会检索存储的200字长字符串并搜索elasticsearch。
这给出了预期的结果,但每次搜索大约需要7秒钟。那是因为搜索短语太长了。有没有更好的方法来做到这一点并找到最佳的弹性重叠?
答案 0 :(得分:0)
我建议您检查/尝试一些事情:
我有5000万种产品的清单。每个产品都有200个清单 特征。我希望通过匹配产品找到类似的产品 在200个功能中具有最大重叠的功能。目前 我用空格连接200个单词并形成一个长字符串。
假设产品是Doc类型,您可以尝试将其保存为通常作为值数组和enabling field data的功能。然后可以很容易地使用aggregations对它们进行分组,应用适当提到的最大重叠并得到你想要的。我坚信它会快得多。
我检索存储的200字长字符串并搜索elasticsearch。
可能有一些情况,你想要的只是聚合结果,而不是所有产品或其他doc类型的完整响应,在这种情况下,将搜索类型设置为count(旧版本)或query_then_fetch,大小为0(较新版本)和您可以避免初始获取所有文档类型并仅获取聚合,这可以在某些情况下根据您的要求使用。
确保您拥有elasticsearch environment proper prepared。
最后,有了这么多的文档,您可能会发现一些shard /replicas configuration更适合您的情况而不是默认情况。