2012-12-26 35 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能得到預期的結果。