繁体   English   中英

使用Solr或Elasticsearch通过大型OR查询子句进行搜索/检索

[英]Search/retrieve by a large OR query clause with Solr or Elasticsearch

我有一个汽车模型的搜索数据库:“日产Gtr”,“ Huynday Elantra”,“ Honda Accord”等。

现在我还有一个用户列表,以及他们喜欢user1喜欢的汽车类型:carId:1234,carId:5678等...

给定用户1,我想退回他喜欢的所有汽车,它可以是0甚至是杂项。

在Solr或潜在的另一个“ nosql”系统中对此建模的最佳方法是什么,可以解决此问题。

我正在使用Solr,但是如果可以的话,我有机会使用另一个系统。

编辑:Solr解决方案是加入慢(也许我们可以尝试嵌套)。 并且当前使用联接表的MySQL解决方案有超过20亿行。

因此,您只想在User-> Cars之间存储映射,并根据用户检索汽车...听起来很简单:

  1. 您的文档是Users:包含ID(已编制索引)等字段
  2. 该字段之一是“喜欢汽车”,多值,其中包含他喜欢的一组汽车ID
  3. 例如,您在不同的集合中有关于每种护理的详细信息。
  4. 给定用户ID,您将检索“ carsliked”字段,并通过交叉集合联接获取汽车详细信息

    您还可以使用嵌套对象将每个喜欢的汽车(以及有关它的所有信息)存储在每个用户内,但是要复杂一些。 另外,您不需要查询上的联接。

Solr可以让您做更多事情,例如,给定一辆车,哪个用户喜欢呢? Elasticsearch将以完全相同的方式工作(考虑到用例看起来多么简单,可能还有许多其他工具)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM