【问题标题】:SOLR Search: Eliminate duplicate email addressesSOLR 搜索:消除重复的电子邮件地址
【发布时间】:2012-11-01 22:40:48
【问题描述】:

如果我的 SOLR 索引中有 2 条记录使用相同的电子邮件地址,并且我的关键字搜索在结果集中同时获得了两条记录,我该如何显示其中一条。例如;

记录 1:

<doc>
     <id>123</id>
     <name>Adil Malik</name>
     <email>abc@hotmail.com</email>
     <jobtitile>Software Engineer</jobtitle>
</doc>

记录 2:

<doc>
     <id>456</id>
     <name>Adil Malik</name>
     <email>abc@hotmail.com</email>
     <jobtitile>Database Developer</jobtitle>
</doc>

如果我们用“abc@hotmail.com”搜索,它会返回两条记录,但我想显示其中任何一条。如果我们有 2 条具有相同的电子邮件地址,我如何在 SOLR 搜索中查询以仅显示一条记录?

注意:我想将这两条记录都保存到我的 SOLR 索引中。


回复@Layke

【问题讨论】:

  • 我想在我的索引中保留重复记录。因为如果有人搜索职位名称:“软件工程师”或搜索职位名称:“数据库开发人员”,在这两种情况下,“Adil Malik”都应该返回
  • 但是如果有人使用电子邮件这样的公共字段进行搜索:abc@hotmail.com,现在 SOLR 搜索将返回 2 条记录,其中 id 为 123 和 456。在这种情况下,我只想显示其中任何一个.

标签: solr


【解决方案1】:

您应该阅读FieldCollapsingDeduplication (重复数据删除完全阻止文档进入索引,这不是您想要的,但我会将其保留在这里以帮助其他读者可能是合适的。)。

要使用 FieldCollapsing,您将使用您的查询并拥有 group: true , group.field : email

但是,查看您提供的文档示例,我可能会说您的架构设计错误,而您实际想要使用多值字段。

在此处阅读此问题,它可能会解释/建议您应该如何使用 MVF。

What is the use of "multiValued" field type in Solr?

【讨论】:

  • 我同意,为您的职位字段使用多值字段类型。
  • 关于 Schema,基本上在我设计多值的时候我就想到了,但由于系统要求我不能使用它。这是一个非常广泛的系统,涉及的东西太多了,我无法在这里解释。为了处理所有事情,我没有采用多值,而是将每条记录分别保存在我的 SOLR 索引中。我相信“FieldCollapsing”正是我所需要的。但是当我尝试它对我不起作用时。我已将屏幕截图附在我的问题正文中。请看一下,看看您是否可以提供帮助。非常感谢
  • 好的,fieldCollapsing 修复了它。实际上我在第 2 版上,我必须升级到第 4 版,然后它才能工作:) 谢谢
【解决方案2】:

如何使用您的电子邮件字段作为唯一键,这样就不允许重复? 在 wiki 页面中搜索 &lt;uniqueKey&gt; 以获取 schema.xml https://wiki.apache.org/solr/SchemaXml

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 2019-12-17
  • 2020-12-04
  • 2019-12-31
  • 2010-11-04
  • 1970-01-01
相关资源
最近更新 更多