Solr在multiValue字段中返回每个值的每个文档

时间:2012-12-26 10:52:11

标签: php solr

我是索尔的新手,我想知道下一个例子是否可行。

假设我有一个包含2个字段的核心,一个字符串字段'name'和一个multiValued字段'ids'。 用doc 1:

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

和doc 2:

  • 姓名:Bob
  • Ids:2,3

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

  • 1 Tim
  • 2 Bob
  • 2 Tim
  • 3 Bob
  • 3 Tim

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

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

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

2 个答案:

答案 0 :(得分:0)

我对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你可以获得所需的结果。

答案 1 :(得分:0)

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