2012-12-26 39 views
1

我是Solr的新手,我想知道下一个示例是否可行。Solr返回multiValue字段中每个值的每个文件

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

  • 名称:添
  • IDS:1,2,3

和DOC 2:

  • 名称:鲍勃
  • IDS:2, 3

现在我想要一个曲子ERY,让我的结果阵列包含下列元素:

  • 1添
  • 2鲍勃
  • 2添
  • 3鲍勃
  • 3添

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

你可以说,只需选择所有文档并在查询后处理其他内容,但是我有很多数据,而且我只想要在multiValued字段中对前20个文档进行排序并按值排序。

我希望这是可能的,有人可以帮助我! 在此先感谢。

回答

0

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

+0

可能无法构建这种查询。感谢您的确认! – Tim

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做同样和排序u能得到预期的结果。