2016-08-23 34 views
1

我正在使用algoliasearch和algoliasearchHelper庫來構建一個即時搜索界面,使用algolia網站上的hogan模板示例。Algolia Facet排序數字

我遇到了排序數字方面的問題。我使用通過作曲家安裝的algoliasearch-client-php填充索引。我傳遞一個整數爲索引對象,像這樣:

"cost_to_build" => (int) $project->data['approximate_cost'], 

但在索引中,我得到這樣的:

cost_to_build: "15.00" 

,然後導致面順序,如:

15,25,3,5,6.

即使thoguh {sortBy: ['name:asc']}。如果我手動將所有索引值從字符串更改爲整數(太多而無法手動完成,並且我們會定期更新),則按照需要進行排序。

任何人有任何提示嗎?

謝謝!

+0

檢查之後:'$首頁 - > ADDOBJECT([ '測試'=> 18]);'實際上增加了索引的整數。你確定這些數據之後沒有被重新處理嗎?它看起來像你的價值然後轉換爲一個浮動然後一個字符串。 – Jerska

回答

1

事實上,值從整數轉換爲字符串本身真的很令人驚訝,我不知道爲什麼會發生這種情況。

但是,如果不解決根本原因,仍然有一個簡單的解決方案。 sortBy參數是also able to accept a comparison function,因此您可以將這些值轉換爲前端中的整數而不是後端中的整數。

東西沿着這些線路應該工作:

helper.on('results', function(content){ 
    //get values ordered only by count ascending using a function 
    content.getFacetValues('cost_to_build', { 
    sortBy: function(a, b) { 
     return parseInt(a.name, 10) - parseInt(b.name, 10); 
    } 
    }); 
}); 
+0

謝謝!我們正在測試,並會在我們確認後儘快接受您的答案。 – jacobdubail

+0

作品一種享受。再次感謝! – jacobdubail