加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Elasticsearch和Rails分析模型数据中的相

发布时间:2020-12-16 21:06:30 所属栏目:百科 来源:网络整理
导读:我想使用Elasticsearch来分析数据并将其显示给用户. 当用户查看模型的记录时,我想在数据库中显示该模型的“相似”记录列表,以及相似性百分比.这将匹配模型上的每个字段. 我知道使用Searchkick gem我可以使用命令查找类似的记录: product = Product.firstpro
我想使用Elasticsearch来分析数据并将其显示给用户.

当用户查看模型的记录时,我想在数据库中显示该模型的“相似”记录列表,以及相似性百分比.这将匹配模型上的每个字段.

我知道使用Searchkick gem我可以使用命令查找类似的记录:

product = Product.first
product.similar(fields: ["name"],where: {size: "12 oz"})

我想更进一步,比较整个记录(最终的关联).

在Rails中使用Elasticsearch / Searchkick是可行的,还是应该使用其他方法来分析数据?

解决方法

在Elasticsearch中有一个专门为此目的而构建的功能,名为more_like_this. mlt查询的文档详细介绍了如何实现您想要做的事情.

将分析您提供给类似字段的内容,并且将使用每个字段的最相关术语来检索具有尽可能多的相关术语的文档.如果您将所有记录存储在Elasticsearch中,则可以使用Multi GET syntax将索引中已存在的文档指定为like字段的内容,如下所示:

"like" : [
      {
        "_index" : "model","_type" : "model","_id" : "1"
      }
    ]

请记住,使用此语法时不能使用索引别名(因此,如果您不确定文档当前所在的索引,则必须先进行文档查找).

如果未指定fields字段,则将使用源文档中的所有字段.我建议避免重大意外,就是始终指定希望类似文档匹配的字段列表.

如果您希望与源文档完美匹配的非文本字段,则可能需要考虑使用bool查询,以编程方式创建过滤器部分,以将mlt查询返回的文档限制为仅整个索引的过滤子集.

您可以使用advanced search功能在Searchkick中构建这些查询,手动指定搜索请求的主体.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读