簡體   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