1

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

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

  • 姓名:蒂姆
  • 编号:1,2,3

和文档 2:

  • 姓名:鲍勃
  • 编号:2,3

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

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

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

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

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

4

2 回答 2

0

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

于 2012-12-26T11:18:24.177 回答
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 和排序你可以获得想要的结果。

于 2012-12-26T11:13:03.000 回答