我使用Solr对包含大约100,000个产品和300,000个用户的系统进行索引和搜索。索引的字段是“价格”。但对于每个用户,价格可能会有所不同
例如:
- 对于Product1和User1,User2。
- User1看到Product1的价格为100美元。
- 但是User2不能看到价格(User2必须满足某些条件才能看到价格),尽管User2在搜索时仍然看到了Product1.
在建立索引时,我们无法确定是否为特定用户设置价格。该产品有一个名为“必需合同”的标志。当用户登录时,我们将检查用户是否已应用该产品的“合同”来显示或隐藏价格。
这个问题的直接解决方案是为每个用户创建不同的“价格”字段。因此,在建立索引时,我们遍历用户列表并索引该用户的“价格”字段。在搜索时,我们为登录用户使用正确的“价格”字段。显然,这不是一个实际的解决方案。
我的问题是如何在这种情况下索引“价格”字段,或者解决方案是否还有其他方法?
答案 0 :(得分:0)
您似乎没有针对每个用户的具体价格,但对于用户组而言。大概是一个不是很多的独特群体。如果是这样,一个简单的解决方案是拥有多个价格字段(price_group_1
,price_group_2
,...),每个用户组一个,并让您的显示代码显示与用户组匹配的代码。
答案 1 :(得分:0)
经过一段时间的研究,我想出了两个解决方案:
1 /第一个是复制需要该条件的文档。重复的文档不包含任何价格(或分配给它的任何值)。因为要求条件的文件数量不是太多所以重复不是浪费资源。因此,在进行搜索时,通过组合其他一些标志,结果是重复的文档,而不是满足我要求的原始文档。
2 /另一种方法是使用Function Queries。我通过在Google上搜索我的问题来解决这个问题,因为我在开始时并不知道该功能。
希望能帮到别人的问题!