保持多值in-solr中的关联

保持多值in-solr中的关联,solr,multivalue,Solr,Multivalue,我的solr数据源中有多值字段。样本是 <doc> <str name="id">23606</str> <arr name="institution"> <str>Harvard University</str> <str>Yale Universety</str> <str>Cornell University</str> <str>TUFTS University</str> &

我的solr数据源中有多值字段。样本是

<doc> <str name="id">23606</str> <arr name="institution"> <str>Harvard University</str> <str>Yale Universety</str> <str>Cornell University</str> <str>TUFTS University</str> <str>University of Arizona</str> </arr> <arr name="degree_level"> <str>Bachelors</str> <str>Diploma</str> <str>Master</str> <str>Master</str> <str>PhD</str> </arr> </doc> 23606 哈佛大学 耶鲁大学 康奈尔大学 塔夫茨大学 亚利桑那大学 单身汉 文凭 主人 主人 博士 在上面的例子中,该用户获得了哈佛大学的学士学位、耶鲁大学的文凭、康奈尔大学的硕士学位、塔夫茨大学的硕士学位和亚利桑那州的博士学位。 现在,如果我搜索拥有学士学位并毕业于哈佛大学的用户,我将得到这个用户,这是正确的。

MyDomain:8888/solr/mycl/select?facet=true&q=:&fq=degree\u level:Bachelors&fq=institute:Harvard+University

但是如果我想要那些有康奈尔大学学士学位的人,我也会得到这个用户,这是不正确的!

MyDomain:8888/solr/mycl/select?facet=true&q=:&fq=degree\u level:Bachelors&fq=institute:Cornell+University

问题是:如何在solr中保持多值排序/映射?
编辑:

顺便说一句,我知道我可以通过创建新的领域来解决我的问题,包括学位与大学的衔接(例如,“哈佛大学学士”、“耶鲁大学文凭”,等等)但是我需要一个基于solr core本身的解决方案,因为我有很多多值字段和很多组合。

下面是一些建议的列表

  • 尝试使用动态字段

    动态创建字段,同时将学位、级别、学士学位与哈佛大学等建立索引。所以,当你想对学士学位进行筛选时,就要对专业学位和级别的学士学位进行筛选。类似地,如果要允许对机构进行筛选,请为机构创建一个动态字段。
  • 您可以预先定义存储数据的方式: 等等。
    然后对所需的正则表达式进行筛选。
    例如:
    fq=教育详细信息:2009@Bachelors@哈佛@*
    这将为您提供2009年哈佛大学学士学位的所有记录。 您必须为所有不同的过滤器提供正则表达式。
  • 两个集合,用于正确建模用户和使用{!join}查询的度之间的一对多关系
  • 一个粒度为“用户级”的集合,通过Solr的字段折叠支持消除重复数据。

您找到解决方案了吗?我也面临同样的问题。如果你发现了什么,请与大家分享。下面你会找到一些建议,请参阅可能的答案。该脚本基于solr 3.6。我的动态字段似乎不起作用。我在data-config.xml文件中添加了以下内容:
。但它不起作用。如何在动态字段中填充数据?好的。我用了变压器,它工作了。非常感谢你的帮助!!