gpt4 book ai didi

java - Solr 。更新文档多值字段(无重复值),无需已提交

转载 作者:行者123 更新时间:2023-12-01 15:41:46 25 4
gpt4 key购买 nike

抱歉,文字太长,解释起来有点困难:

我们正在使用 Solr 来索引一些用户信息,例如用户名、电子邮件(以及其他信息)。

我还尝试使用构面进行搜索,例如,我向用户添加了一个名为“组织”的多值字段,我将在其中存储用户工作的组织的名称。

因此,我可以使用该字段进行分面搜索,并能够按用户工作的组织过滤用户搜索查询结果。

所以现在,我遇到的问题是我的代码做了类似的事情:1)将用户文档添加到Solr2)当用户被分配组织成员资格(角色)时,更新用户文档以设置组织字段

现在我在第 2 步中遇到以下问题:如果我只是在用户文档上执行 addField("organizations", "BigCorp") ,它将添加该值,无论组织是否已经具有该值("BigCorp"),但我希望每个组织名称仅出现一次.

因此,我发现获得该行为的唯一方法是查询用户文档,获取“组织”的值,并且仅在新值尚未存在时添加新值 - if !userDoc.getValues("organiations")。 contains(value) {...将值添加到文档并保存...}-

现在效果很好,但前提是我一直提交(至少在步骤 1 和 2 之间),因为除非已经提交,否则文档查询将无法工作。显然,理论上最好不要一直提交性能方面的信息,而且不切实际,因为我批量处理这些插入。

所以我想主要问题是:

  • 有没有一种方法可以更新多值字段,并且不允许重复,并且不需要查询文档来手动防止重复?

  • 也许有更好的方法来做到这一点?

谢谢。

最佳答案

有几件事 -

  • 对于多面字段中的多个重复值,多面字段中的值仅计数一次。因此,即使您添加多个相同的值,也会在构面计数条目中反射(reflect)为单个值。已经测试过了。你也可以确认。
  • 此外,当您重新索引文档时,为什么需要检查现有文档中的内容。我认为您将拥有唯一的组织列表,并且当输入到 Solr 时,该文档将被删除并插入。

关于java - Solr 。更新文档多值字段(无重复值),无需已提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7932331/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com