【问题标题】:Solr return each document per value in the multiValue fieldSolr 在 multiValue 字段中返回每个文档的每个值
【发布时间】:2012-12-26 10:52:11
【问题描述】:

我是 Solr 的新手,我想知道下一个示例是否可行。

假设我有一个包含 2 个字段的核心,一个字符串字段“名称”和一个多值字段“ids”。 使用文档 1:

  • 姓名:蒂姆
  • ID:1,2,3

和文档 2:

  • 姓名:鲍勃
  • ID:2,3

现在我想要一个查询,它给我一个包含以下元素的结果数组:

  • 1 蒂姆
  • 2 鲍勃
  • 2 蒂姆
  • 3 鲍勃
  • 3 蒂姆

因此,查询返回 multiValue 字段中每个值的每个文档,首先按 'ids' 中的值排序,然后按名称排序。

您可以说,只需选择所有文档并在查询后处理其他内容,但我有很多数据,我只希望前 20 个文档在 multiValued 字段中按值排序。

我希望这是可能的,有人可以帮助我! 提前致谢。

【问题讨论】:

    标签: php solr


    【解决方案1】:

    如果您希望多次返回文档并对两个字段进行排序,您可以为每个组合插入单独的记录。
    这是大量重复数据,但假设这是您实现它的唯一方法。
    您可以使用Grouping 功能,但它不适用于多值字段。

    【讨论】:

    • 可能无法构建这种查询。感谢您的确认!
    【解决方案2】:

    我对 solr 了解不多,但
    我认为通过 SolrPhpClient 你可以这样做:

     $arr1 = explode(":","Name: Tim");
     $arr2 = explode(":","Ids: 1,2,3");
     $arr2 = explode(",",$arr2[1]);
    
     for($i=0;$i<$arr2.length;$i++){
     array_push( $arr3 ,array( $arr2[i] ,arr1[1] ) );
     }
    


    第二次做同样的事情
    通过 array_merge 和 sort 可以得到想要的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-09
      • 1970-01-01
      • 2012-10-06
      相关资源
      最近更新 更多